Systems and Methods for Indexing Information for a Search Engine

ABSTRACT

Embodiments of the invention form an information set from the current set of index information available by the operations of the pre-search and runtime Search components of the search engine. A search request that contains search terms and/or other search criteria (e.g. date or file type) is entered by a user through an input interface. The search terms and the information set are worked through the search engine modules to provide the actual results sought by the user. These results are provided to the user via an output interface. Embodiments involve scanning the repository for documents that comprise at least one information type, and forming a numerical matrix from the scanned documents.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. application Ser. No.12/192,794, filed Aug. 15, 2008 and entitled, “SYSTEMS AND METHODS FORINDEXING INFORMATION FOR A SEARCH ENGINE.” This application is alsorelated to co-pending and commonly assigned U.S. patent application Ser.No. 12/192,775, filed Aug. 15, 2008 and entitled, “SYSTEMS AND METHODSUTILIZING A SEARCH ENGINE,” U.S. patent application Ser. No. 12/192,834,filed Aug. 15, 2008 and entitled, “SYSTEMS AND METHODS FOR SEARCHING ANINDEX,” U.S. patent application Ser. No. 12/192,846, filed Aug. 15, 2008and entitled, “SYSTEMS AND METHODS FOR TOPICAL SEARCHING,” and U.S.patent application Ser. No. 12/192,875, filed Aug. 15, 2008 andentitled, “SYSTEMS AND METHODS FOR A SEARCH ENGINE HAVING RUNTIMECOMPONENTS,” the disclosures of which are all hereby incorporated hereinby reference.

TECHNICAL FIELD

This application is related in general to information repositorymanagement and in particular to a search engine for retrievinginformation from memory.

BACKGROUND OF THE INVENTION

Computer users use search engines to retrieve information that meetspecific criteria, from information stored on a computer system. Forexample, computer users may use search engines to search for informationon the World Wide Web, on a corporate network, or on a personalcomputer. Typically, a user will provide a search term, which is one ormore words, or a phrase, to the search engine and request that thesearch engine conduct a search for documents containing the search term.Depending on the search term provided to the search engine, theinformation returned by the search engine could be voluminous.Consequently, most search engines provide, to the user, relevancerankings of all the information returned to the user. The relevancerankings aid the user in determining which information the user shouldview to get the information the user needs.

Current searching technologies are represented by monolithicgeneral-purpose search services that are based on broad-brushassumptions, which are typically derived from mass-market statisticsabout the information needs of individuals. Also, the currenttechnologies attempt to personalize searching by collecting andmaintaining personal data about users in central locations. Note thatthis personal data is subject to unauthorized use. The currenttechnology provides search results based upon the personal data and themass-market statistics. More specifically, the current technology reliesupon linguistics and semantics to attempt to match search terms todocuments using algorithms by trying to construe meaning from context.

Current technology has incomplete indexing of the data or documents thatis to be searched. General-purpose search engines typically use the samebasic approach to building an index entry for every document theyinclude in their search universe. However, different engines usedifferent assumptions and compromises in building their indexes. Theassumptions determine what is left out of the index in order to keep thesize of the index small. Typical search engines include a list of stopwords or words that are very common to the documents being indexed. Stopwords are words that are not indexed. Typical stop words include mostpronouns, articles, and prepositions, and high frequency words. Forexample, in a database of patent documents, the word ‘patent’ may be astop word.

The use of stop words is problematic for two reasons. The first reasonis that stop words may have more than one meaning, with one meaningbeing very common, and the other meaning may be a suitable search term.In keeping with the above patent example, a document discussing ‘patentleather shoes’ would not have the word patent indexed. Thus, a usersearching for such a document would not be readily able to find it. Thesecond problem is that functional words, e.g. the articles, thepronouns, prepositions, etc., form the structure of language. By usingthese functional words as stop words, search engines cannot apply anykind of grammatical analysis to the index. Current search engines maytry to parse phrases to maintain some context by defining a tree thatlinks nouns and verbs together. However, current linguistics programsthat use such natural language processing (NLP) parsing are only about65% accurate.

Current indexing techniques also include indexing a metadata tagassociated with a document rather than the document itself. The metadatatag typically comprises information such as document type, title,author, date, metadata, XML objects, other specific context information,etc. Consequently, forming an index from the metadata tag rather thanthe document greatly limits the accuracy of searches.

Another current indexing technique is to build a taxonomy of thedatabase to be searched. A taxonomy is a hierarchy or decomposition ofthe documents to relate them to each other. In other words, a taxonomyparses elements of a group into subgroups that are mutually exclusive,unambiguous, and as a whole, include all possibilities. For example, theaccepted biological taxonomy of living things is kingdom, phylum, class,order, family, genus, species. One problem with taxonomies, especiallyin technology, is that it typically requires between 6 months and 18months to complete for a typical database. And consequently, thetaxonomy is obsolete or out-of-date when completed. Also, the hierarchyof the taxonomy acts to limit the searching of the database by requiringsearches to conform to the taxonomy, and thus this will reduce theaccuracy of a search.

When a user enters a list of words to initiate a search, these searchengines attempt to achieve the “best match” between the search term andthe index of the documents. The results are displayed to the user interms of a ranked list. Different search engines use differenttechniques to rank the results. One common manner is to rank the resultsbased on the popularity of each hit in the result list. Sites ordocuments that are used more often would rank higher than those usedless often. Another manner is to rank the results based on cites orlinks, whereby a document that is linked or cited more in otherdocuments would be ranked higher than a document with less links orcites. A further manner is ranking by opinion, where documents or sitesthat are subjectively rated as influential would be ranked higher thanthose that are not. A still further manner is by payment, where sitesthat have paid fees to the search engine are ranked higher than thosethat have not.

BRIEF SUMMARY OF THE INVENTION

The present invention is directed to a system and method which providessearch results from search terms provided by a user or application thatmatch with documents in an information set. Embodiments of the inventioninvolve a search engine that responds to a search request received froma user through an input interface. Other components of the search enginegenerate and maintain an index of the information that is available forsearching.

The search terms are converted to a format that is used for the index.Both the search terms (ST) and the index are worked through filters andprocesses of the search engine, including a RealTime Search componentthat determines the precise intersections between the ST and thecorresponding information set (ISet) members of the searchable universe.When the RealTime Search component has completed its processing, itpasses the results to the Post-Search component, from where theseresults are prepared for, and transmitted to, the Return Interface.

A Pre-Search component of the search engine creates and maintains theindex or indices of the searchable universe. One module of thePre-Search component uses a crawler to locate and scan all documents forselected sets of information types in the information repositoryavailable that are searchable. This information is then formatted byremoving extraneous information. A term unit (TU) array is created ofall the TUs in the exact order of their appearance in each document.Other information about the document is also stored and formatted bythis module, such as modified date, document name, title, etc. Each TUarray is then indexed in one or more binary files. The binary formatcontains all the required information in an index file on an ISetmember-by-ISet member basis. Note that the information is ISet membercentric, not word centric. It is this index file that represents thesearchable ISet for responding to search requests. After creation of theindex, the index is maintained to reflect changes in the searchableuniverse, e.g. additions, deletions and/or modifications to documents.

An optional RunTime Search component can be used to modify the ISet toimprove or enhance searching operations. The ISet may contain partial ortotal duplicates of other ISet members, or ISet members may containduplicate sets of TUs. One module may be used to notify systems and/orusers of similar documents, as well as the use of ungrammatical TUduplication within a document. This information is communicated back tothe Indexer module of the Pre-Search component, which can then storethis information in the index. Another module allows for topicalsearching of the ISet. This module analyzes the ISet, both within ISetmembers (i.e., intradocument) and within groups of ISet members (i.e.,interdocument) for the potential of main topics and subtopics. The topicthen is a common starting point for more refined search capabilities. Itcalculates the ISet's topical intervals (TIs) and provides them to theIndexer module for storage in the index. Another module allows for theindex file(s) to be stored in cache. This module acts as a memory storeuntil the RealTime Search component is triggered to respond to a searchrequest, at which time this module makes its contents available to it asneeded. Note that, at this point in time, the Indexer files used by theRealTime Search component reflect the ISet as contained in the cache.

When an SR is initiated, the RealTime Search component of the searchengine begins operations. One module receives the search terms (ST) froman Input Interface. This module normalizes the ST into the proper form.Thus, disparate input interfaces can be used for the same RealTimeSearch component. Next, another module converts the ST into a faster,more efficient readable input form that is used for determiningintersections between the ST and the ISet. A subsequent module expandsthe ST to include synonyms, acronyms, Boolean values, etc., according tothe implementation. Meanwhile, a Filter module operates on the ISet toremove any documents with noncompliant ST attributes, such as ISetmembers that do not have the correct date or are not in the requiredformat, do not contain the correct topics, etc. The Filter also performsthe function of communicating with the cache module for the actual indexfiles that are required to be loaded. The output of this module is theunique ISet member structure that is sent to the Posit Block Collectormodule.

The Posit Block Collector module of the RealTime Search componentoperates to complete the intersection of the ST and the filtered ISet.This module eliminates any remaining ISet members in which the TUs ofthe ST are not found at least once or those that do not meet thedocument threshold (docT). This module also performs other functions toproduce a posit block (PB) array or structure for each ISet member. PBsare the intervals between posits that contain the ST within theconstraints indicated by the type of search (TOS). For example, withexact search there must be an exact correlation between the ST and theISet member.

The Refiner module of the RealTime Search component receives the ISetmember structure from the Posit Block Collector module. This moduleevaluates the PB relation to the ST for each ISet member containing astructured segment. For example, the module identifies the column nameof the posit. This module also compensates for ISet member length toensure the relevance scoring is properly weighted. Depending on the STfrequency of occurrence within a PB, one or more PBs are sent to beprocessed by the Processor module.

The Processor module of the RealTime Search component is a numericalprocessor that computes the number set (NSet) values, relevance scores,and the most relevant parts (MRPs) for the intersection of the ST andthe ISet. An NSet is a set of numbers that represents the set ofintervals that describe certain grammatical and/or syntacticalconditions in the intersection between an ST and an ISet member, such asthe replication of the ST within an ISet member's length. The relevancescores are then calculated based on the relevance equations applicableto the types of search involved. These equations are based on the meritof each ISet member and may not be based on any external factors. TheMRPs are ISet segments containing the ST within the actual MRP excerptlength specified by implementation requirements. These outputs arepassed back to the refiner module and modified, if necessary, beforetransfer to the Aggregator module.

As a single-location entity or as a hierarchal chain, the Aggregatormodule of the RealTime Search component collects all the informationabout an ISet member (e.g., relevance scores, MRPs, etc.) and places itin a single location for ultimately returning it to the user via areturn interface. Depending on a given implementation, the Aggregatormay also be responsible for translation of the numeric MRP values to theoriginal words; this process is known as MRP decoding.

The Post-Search component of the search engine comprises a Returnermodule that places the information received from the Aggregator in itsfinal correct form and returns it to the Return Interface, wheredepending on implementation MRP decoding may take place. From the ReturnInterface, the output is provided to the user.

One embodiment of the invention may be a system for forming an index ofan information repository, wherein the system is stored on acomputer-readable medium.

The system comprises an Acquisitioner module that locates a plurality ofdocuments within the repository, a Formatter module that refines thedocuments located by the Acquisitioner module, and an Indexer modulethat forms a numerical matrix from the refined documents, wherein thenumerical matrix is the index.

Another embodiment of the invention may be a method for forming an indexof an information repository, wherein the method operates on a computersystem. The method comprises locating a plurality of documents withinthe repository, refining the documents, and forming a numerical matrixfrom the refined documents, wherein the numerical matrix is the index.The index is useable by a search tool that compares the index with asearch request from a user.

A further embodiment of the invention may be a computer program producthaving a computer-readable medium having computer program logic recordedthereon for forming an index of an information repository. The computerprogram product comprising means for scanning the repository fordocuments that comprise at least one information type, and means forforming a numerical matrix from the scanned documents, wherein thenumerical matrix is the index.

The foregoing has outlined rather broadly the features and technicaladvantages of the present invention in order that the detaileddescription of the invention that follows may be better understood.Additional features and advantages of the invention will be describedhereinafter which form the subject of the claims of the invention. Itshould be appreciated by those skilled in the art that the conceptionand specific embodiment disclosed may be readily utilized as a basis formodifying or designing other structures for carrying out the samepurposes of the present invention. It should also be realized by thoseskilled in the art that such equivalent constructions do not depart fromthe spirit and scope of the invention as set forth in the appendedclaims. The novel features which are believed to be characteristic ofthe invention, both as to its organization and method of operation,together with further objects and advantages will be better understoodfrom the following description when considered in connection with theaccompanying figures. It is to be expressly understood, however, thateach of the figures is provided for the purpose of illustration anddescription only and is not intended as a definition of the limits ofthe present invention.

BRIEF DESCRIPTION OF THE DRAWINGS

For a more complete understanding of the present invention, reference isnow made to the following descriptions taken in conjunction with theaccompanying drawing, in which:

FIG. 1 is an arrangement of a search engine, according to embodiments ofthe invention;

FIG. 2 depicts an arrangement of an indexer of the search engine of FIG.1;

FIG. 3 depicts an arrangement of processing layers for the search engineof FIG. 1;

FIG. 4 depicts a flowchart of a topical search process, according toembodiments of the invention;

FIG. 5 depicts an example of an input interface, according toembodiments of the invention;

FIG. 6 depicts another example of an input interface, according toembodiments of the invention;

FIG. 7 depicts a further example of an input interface, according toembodiments of the invention;

FIG. 8 depicts an example of an output interface, according toembodiments of the invention; and

FIG. 9 depicts a block diagram of a computer system which is adapted touse the present invention.

DETAILED DESCRIPTION OF THE INVENTION

Note that as discussed above, current search engine technology does notprovide accurate relevancy rankings. In other words, current searchengines give low rankings to desirable information and high rankings toundesirable information, and/or do not find desirable information.

There are primarily two reasons for inaccurate relevancy rankings.First, apart from an exact search, current search engines do not takeinto account how words of the search term appear in a document indetermining the relevancy of the document. Rather, current searchengines base rankings, in part, on identifying whether the words of thesearch term appear in the document and how often those words appear.Second, in current search technology, apart from identifying whether thewords of the search term appear in the document, relevancy rankings areheavily dependent on criteria that may not reflect the user's needs. Forexample, current search engines rely on information about previoussearches conducted by other users, expert authority on the importance ofdocuments and link popularity. In essence, current search technologyranks the relevancy of information primarily on the forecasted need ofthe user and not on the actual need of the user as deduced from theinformation the user provides when requesting the search.

The accuracy of relevancy rankings is important because it affects theefficiency with which computer users retrieve information they need.There is a need, therefore, for an improvement in current searchtechnology where information returned to a user after a search requestby the user, is accurately ranked with respect to the needs of the user.

A search engine, according to embodiments of the invention, in simpleterms, receives an input message that contains a request for desiredinformation, processes the contents of the message through thecomponents within the search engine, and returns an output message thatrepresents the information requested, including, if desired, links tothe original file(s) and other information about the file(s). The inputmessage is in the form of a search request (SR) that includes one ormore search terms (ST) and/or associated search criteria, e.g. name,date, file type, author, editor, publisher, format type, etc. Note thislist is only limited by the format of the original file and hostoperating system; for instance, a plain text format (e.g., .txt)typically contains significantly less information than a word processingfile (e.g., .doc). The search engine comprises various components,described below, that process the SR for a current information set(ISet) universe. The search engine returns the results of theintersection between the SR and the ISet universe, which is the basisfor all processing. The search engine prepares the results and returnsan output message in response to the search request.

The ISet is the information set representing the searchable documentsthat meet the search region and file filter restrictions for a search.The ISet may comprise structured and/or unstructured information sourcemembers or entries. A structured source is typically a database, whichcomprises a collection of one or more tables, with headers, records, andfields. An unstructured source is typically comprised of text, and mayinclude embedded structured segments, e.g. tables and/or graphics(including imported graphics). The word “document” as used herein refersto a structured and/or unstructured information source. Thus, the searchengine is capable of indexing and searching both structured andunstructured information.

A search engine, according to embodiments of the invention, mayaccommodate several types of search (TOS) requests for search terms,ranging from “Exact” to “Flex”, “Bucket”, and “Topical”. One type is aBucket Fetch (or b-Fetch) TOS, where the user requests the retrieval ofall searchable documents containing the search term in whole, in any TUorder, or in any TU position. Another type is an Exact Fetch (ore-Fetch) TOS, where the user requests the retrieval of all searchabledocuments containing the search terms precisely as entered, specificallyin TU order and TU position. A further type is a Flex Fetch (or f-Fetch)TOS, where the user requests the retrieval of all searchable documentscontaining the search terms within a range of TUs that include eithersearch term constrained TU position interruption or constrained TU orderinversion. A still further type is a Topical Fetch (or t-Fetch) TOS,where the user requests the retrieval of all searchable documentscontaining the search terms within an information category (IC).Additional combinatorial search types, such as Query Fetch, Multi-MediaFetch for pictures and movies, as well as speech hardware and/orsoftware support, can be added to the search engine. In addition, fullapplication rendering of textual documents; i.e., photos, graphics,formatting (styles and text decoration) can be added by implementing oneor more specialty indexes, such as findex and pindex). Note that afunctional index or findex operates at the TU, fractional length (FL),or section scope. A findex efficiently encodes specific informationabout formatting that is common throughout multiple ISet memberinstances (such as bold, underline, font, border), making the storage ofsuch information more distributable. A path index or pindex operates atvarious scopes. A pindex is an efficient encoding scheme that storespath and other file location information in a form that isdistributable.

A search engine, according to embodiments of the invention, transformssome or all of the search terms and one or more ISets into numeric code,using grammar-embedded rules for characters, numbers, and symbols. Thesearch engine uses mathematical relations and grammatically-controllednumeric pattern matches for its transform functions. Note that as usedherein, “grammar” is used in the context of the rules applicable tohuman language, “syntax” is used to describe the rules that make up aprogramming language, such as C++ or Java, and “language” refers tohuman language and/or machine language.

A search engine, according to embodiments of the invention, may operateon an enterprise server or servers, on a personal computer, on a datastorage appliance, and/or on a portable data device, e.g. an MP3 player,a personal data assistant, a cellular telephone, a camera, a smartphone, or any type of data storage device where data retrieval is neededor useful. A search engine, according to embodiments of the invention,is useful for portable data devices because the search engine and itsassociated ISet both have small footprints, meaning the size of theengine and the size of the ISet is relatively small, as compared to thestored data. For example, the search engine may comprise about 250kilobytes, and the ISet may comprise a size that is about one tenth thatof the stored data. Thus, the portable devices may not need to havetheir memory increased to use the search engine. Note that the searchengine (or portions thereof) may be embedded into an operating system.

A search engine, according to embodiments of the invention as discussedabove, comprises a plurality of components, for example, a Pre-Searchcomponent, a RunTime Search component, a RealTime Search component, anda Post-Search component. The Pre-Search component provides crawler andinformation acquisition, formatting, indexing, and maintenancefunctions. The Pre-Search component takes the documents to be searchedand puts them into a searchable index. TheRunTime Search componentprovides index refining and caching operations. Index refiningoperations include duplicate blocking and topical searching, whilecaching operations store the index in a memory for later use. TheRealTime Search component provides handling of the input search terms,matching and filtering operations, numerical computations and relevancescoring, and aggregation of the search results. The RealTime Searchcomponent compares the search terms with the index, and performsrelevance calculations. The Post-Search component provides transferringof the aggregated search results to the user for display or furtherapplication processing. The components of the search engine, includingthe Pre-Search and Post-Search components, may be customized, e.g. byuser-tunable on-off switches to activate various modules and methods.Such customization may allow refinements to the user's search criteria,such as capitalization, synonyms, acronyms, and drilldown among others.

Note that the search engine finds and returns the structured andunstructured documents that form an intersection between the searchterms and ISet members without any form of manipulation or interference.Thus, the search engine may operate without heuristics, linguisticanalysis, nor scoring mechanisms, such as scoring documents based onpopular or authoritative opinions, inbound/outbound links, and otherpre-determined judgments. The search engine may have relevance equationsand scoring procedures that reflect the direct merit of a given ISetmember or searchable document to the user's search terms.

A search engine, according to embodiments of the invention, convertsstandard grammar rules, through mathematical relations, intomathematical equations. This allows a computer executing the searchengine to efficiently process search requests without beingcomputationally intensive. No heuristics or previous search results arenecessary, because the mathematical equations are solved at run time foractual constructs of each search entry, thus accurately reflecting thegrammar rules and their mathematical equivalents. This avoids the use ofcontextual-based linguistic parsing methods, which typically leads toarbitrary constraints or dependence on language analysis of tenuouslogic, or probabilistic modifications of the given search criteria.Additionally, the search engine can operate in different applicationsthrough extension methods, by using a small data store that usesassociative logic (e.g. a thesaurus) to support these methods. Extensionmethods can include a messaging system that sends well-formed messagesbetween the search engine and any other applications or within thesearch engine at well-defined entry points, excluding the modules thathave no interfaces required as they do only internal processing.

The search engine may be embedded within third party applications and/ormay be a discrete application integrated with other applications throughthe interfaces. For a web service deployment, the search engine may beused to index and allow searches to be performed on Internet documents.The search engine may be deployed in a stand-alone application, a mobileapplication, or an enterprise application. The search engine may beimplemented in a self-contained deployment, i.e. all components locatedin a single device, e.g., a computer, a laptop computer, personalcomputer personal data assistance, a camera, a phone, a cell phone,mobile phone, a computer server, a media server, a music player, a gamebox, a smart phone, a data storage device, measuring device, handheldscanner, a scanning device, a barcode reader, a POS device, digitalassistant, desk phone, IP phone, solid-state memory device, and a memorycard. Alternatively, the search engine may also be distributed inmultiserver application, thus allowing for multiple instances of thesearch engine to work together in a collaborative way, (e.g., betweenmobile devices and enterprise servers), which increases the speed,scope, and/or precision of search. In other words, different componentsmay be located on different devices. Also, multiple instances of thesame components may be located on different devices and operatetogether. The search engine may be deployed to allow enterprisesearches, which would allow large companies to use widely dispersedbodies of documented knowledge, and allow authorized users to accessinformation wherever it is held Implementation administrators can managethe indexing of the documents to deliver both user value and companyconfidentiality. Certain indexes may be replicated across multiplelocations within the enterprise, including end-user devices. The highlycompressed format of search results can then be decoded on the usermachine instead of on the server, allowing the presentation ofcomprehensive MRP details without the need to pass large files acrossthe network, until a full original document copy is actually needed bythe user.

Note that the search engine may optionally contain one or moretolerances that may be used to control system behavior and affect theoutcome of the return set of ISet members. A tolerance differs from adocument filter, such as a date, because there is no simple yes/no orbinary outcome. There are many outcomes that are possible that thesearch engine requires sensitivity to in order to more accurately andprecisely return the results required.

The search engine uses the theories and methods of discrete andcombinatorial mathematics to transform the search process intomathematical functions with numerical values. Operating within a runtimeconstraint set and unique relevance equations for each search type,these functions produce relevance scores for a user's specified searchcriteria. The search engine may use topics to widen or constrain searchrequests, and thereby allow the better user control of the search. Suchtopic information is storable within the binary format. The topicinformation may then be recalled to use as a filter to only allowdocuments with requested topic(s) to be passed through the filter. Thetopic information may be added to the index, thus allowing the topiccategories to be available for rapid RealTime Search. Note that this maybe performed based on document values, and not performed until after thesearch is completed. Topical information may further refine the resultsby only considering the MRPs that are contained within the requestedtopic(s) range or interval. Combinatorial mathematics is a branch ofpure mathematics concerning the study of discrete (and usually finite)objects. This area of mathematics studies families of sets with certaincharacteristic arrangements of their elements or subsets, in an effortto determine what and how many combinations are possible. Discretemathematics is the study of mathematical structures that arefundamentally discrete in the sense of not supporting or requiring thenotion of continuity. Continuity or a continuous function refers to afunction for which small changes in the input result in small changes inthe output.

The one or more indexes or ISet, according to embodiments of theinvention is numeric. This allows each index to be more compact thanother indexes even when more document content is incorporated in theindex. The index can include punctuation and capitals, if needed ordesired. The index does not need to omit any words from the indexes,unlike conventional indexes that usually exclude a number of “stopwords” that are assumed to be unimportant for searches. Although thenumeric aspect results in the index having a proprietary format, theindex allows for significant customization based on tolerances, as wellas languages.

A search engine, according to embodiments of the invention, enables auser to include synonyms, acronyms, and/or other “switches” to focus thesearch. After processing, the search engine then returns to the user,via an output interface, the results of the search. Such results may beone or more answers, and/or one or more most relevant parts (MRPs) andtheir associated hot links, for each relevant ISet member, rankedaccording to their relevance to the user's ST.

The search engine, in part or in whole, may be embedded in a device thatmay be mounted or attached on a person's apparel or other material aperson carries, on a person's body, or implanted in a person's body. Thesearch engine may be activated by any form of communication such astouch, voice, motion sensor, electronically, optically, etc. Note thatthe search engine can be embedded in a laptop computer, a phone, mobilephone, a music player, a game box, a data storage device, measuringdevice, handheld scanner, scanning devices, barcode reader, POS devices(e.g. cash register), digital assistant, desk phone, or IP phone.

FIG. 1 depicts an exemplary arrangement of a Search Engine 100,according to embodiments of the invention. In this arrangement, theSearch Engine 100 comprises four main components, namely Pre-Searchcomponent 101, RunTime Search component 102, a RealTime Search component103, and Post-Search component 104. Note that in this arrangement InputInterface 105 and Return Interface 106 are shown to be separate from theRealTime Search component 103 and the Post-Search component 104,respectively. Other arrangements may have one or both of the InputInterface 105 and Return Interface 106 being integral with the RealTimeSearch component 103 and the Post-Search component 104, respectively.

Pre-Search Component 101

The Pre-Search component 101 is operative before responding to anyend-user search request. The Pre-Search component comprises anAcquisitioner or crawler, a Formatter, an Indexer, and a Maintainermodules. The Pre-Search component 101 prepares files from variousinformation sources into a consistent, searchable index format.

These documents are referred to as information set members or ISetmembers. For instance, information that requires searching may be in aword processing file, or a portable document file, a database, orothers. These disparate forms must be put into a consistent format toallow better searching operations across a variety of file formats. Thisis the process of an ISet member being created and stored in an index.An index is a collection of ISet members. The index is the overall storeof ISet Universe information at potentially all operating scopes,depending on implementation, in a searchable format that is efficientand distributable. It includes any number of supporting encoding schemes(such as windex, pindex, etc.) This is itself a file format that can beused by any application.

Acquistioner Module 107

The Pre-Search component 101 begins its operations with theAcquisitioner module 107. This module operates similarly to a crawler,and scans the associated information repository or repositories forcertain information types. This module locates and scans all documentsfor selected sets of information types (e.g., *.html, *.xls, *.doc,*.ppt, *.pdf, etc.) in the information repository or repositoriesavailable to the system that comprise the searchable universe. Thisactivity is similar to the crawling function used on the Internet, on anenterprise network, or on a single device (such as a laptop or asmartphone). The documents, thus located and scanned, are stored inmemory, along with source data such as date, location address, etc., fortransmittal to the Formatter module 108.

Formatter Module 108

The Formatter module 108 removes all extraneous information, such asmeta-tags, from the information received from the Acquisitioner module107. The remaining information is stored as term units (TU) in a TUmatrix in a storage medium. A term unit is any set of characters (e.g.,words) or symbols separated by a space. The matrix stores all TUs in theexact order of appearance, as well as any document attributes such as ahard drive or network ID, modification date, table information, documentname, etc. This information is provided to the Indexer module 109, whichis the next module of the Pre-Search component 101.

Indexer Module 109

The Indexer module 109 module uses the TU matrix to create a numeric,binary representation of the information in a compact and efficientformat. This representation comprises the searchable universe or ISetused by Search Engine 100. Note that the index form is preferablydocument centric, and not word centric. This representation can bestored for redundancy as a set of indexes on disk. Terms are stored in awindex, which is a numerically encoded term list. These index(es) andwindex(es), along with other specialized index forms that can becreated, form the information set (ISet), which is the binary formatthat is searched during search operations.

The Indexer takes the TU listing, and the file characteristics (if any),and converts this information into a set of indexes that are used toboth efficiently and accurately reflect the document's information. TUsare identified by a “word” index value (this is based on the tolerancesrequired by the implementation) and are stored in a single format,called a windex. Other information derived from the TUs in order and thedocument's characteristics are also calculated and added to the index.

The Indexer takes the TU listing, and the file characteristics (if any),and converts this information into a set of indexes that are used toboth efficiently and accurately reflect the document's information. Forinstance, path names for locations of documents may be stored in apindex; formatting, including links and embedded elements, may be storedin a findex. Thus, the basic indexing strategy can be extended tosupport any kind of repetitive information within an ISet. This allowsthe index format to serve as an application format, allowingapplications to use a searchable format in addition to other tasksrequired to be performed on the information.

The basic information that should be collected by an index is: documentcharacteristics (such as modified date, file format); the document type(structured or unstructured, or dual); structural information ofstructured segments or documents; the TUs; the functional-length (FL)indicators; the TU Type; and the position of the TU or posit. Dependingon other modules, more information can be stored in the index as itsupports any possible module that needs to write information to theindex (such as the Topical Searcher 112 and Duplicate Blocker 111 of theRunTime Search component 102, discussed below). The specific order andmethod of storage is dependent on implementation.

Document characteristics refer to the qualities of the document that maybe suitable for filtering by searchers. For instance, all documents mustbe uniquely identifiable. For example, the document address may be theunique identifier of a document. Other document characteristics, such asmodified date or document title, may be stored by the index. There is nolimit on the number of document characteristics that can be stored.

The document type is a special case of a document characteristic and itrefers to the inherent relations indicated by the document. A structureddocument implies that the entire length of the document is built arounda set of relations. The most common type of structured document is arelational database, where columns have specific relations and a set ofcolumns or a row have a specific length. Any kind of document thatcontains such a relation is considered a structured document. Anunstructured document contains no such relations; the text occurswithout any other relations, except for the inherent grammar and/orsyntactical relations. This would be a word processing file, apresentation file, a text file, or others. A third document type alsoexists, whereby an unstructured document contains structured segments,such as an embedded table or a database. This type of document is calleda dual document; whereby there are both unstructured and structuredelements. Note that any kind of metatagging, such as XML, that providesa structure for a document, is typically not considered to be astructure by the search engine.

The stored TUs are what are searched. These comprise the total set ofTUs available in a specific document. Note that only those TUs visibleto the user are indexed, and metatagging or other such markup TUs maynot be included in the actual TU set for a given document. However,these aspects may also be indexed these values if required. The TU typerefers to the function of a TU within a given grammar/syntax. There aretwo basic types: the functional TU (FTU) which is those TUs that containno unique meaning; and the content TU (CTU), which is those TUs thatcontain a unique meaning and form the basis of most search requests.These are identified by the communications ID (Comm ID) that identifiesthe grammar/syntax used by the search engine at the time of indexing.Each Comm ID requires a set of FTUs to be identified and stored; theCTUs are all the remaining TUs not in the FTU set.

The following are some of the English language FTUs: about, above,across, after, against, along, among, an, and, another, any, around, as,at, before, behind, below, beneath, beside, besides, between, beyond,but, by, concerning, despite, during, each, either, except, excepting,for, from, her, his, in, into, its, like, my, near, neither, nor, of,off, on, onto, or, our, out, over, per, regarding, round, several,since, so, some, that, the, their, these, this, those, through, to,toward, under, underneath, until, up, upon, what, whatever, whatsoever,which, who, whom, whose, with, within, without, yet, your. Note thatthis list is not exclusive as other FTUs may exist. Other languages orother dialects of English may have different or additional FTUs.

Lastly, the position of each indexable TU is assigned an integer toindicate its position in the document. This is referred to as its posit.

FIG. 2 depicts exemplary operations of the Indexer 109 of FIG. 1. TheIndexer 109 receives that Formatter list 201 as the input from theFormatter 108. The Formatter List 201 is a list of TUs, punctuation, andother characteristics of the ISet documents. The Indexer 109 will thenbuild the index using the list. The Indexer 109 views the documents ofthe ISet as a plurality of layers, some of which can be indexed, andother layers that cannot be indexed.

FIG. 3 shows the demarcation between the grammar dependent andindependent layers, along with the indexable layers. The Search Universe(SU) Layer 301 is the entire document repository, representing all theinformation available to a user or system, that is available. The GroupLayer 302 is a portion of the SU that is grouped using some kind ofmechanism or filter, such as a set of documents that have the same filetype or are exist at the same network location. The ISet Member Layer303 is a single document in an SU, and may be identified as a uniquefile such as a word processing document or URL, e.g.\\serverA\dir1\dog.doc. The Section Layer 304 is a part of a documentidentified using a specific criteria, such as a set of TUs that belongto a topic. The Fractional Length (FL) Layer 305 represents a group ofterm units (TUs) that have established endpoints derived from either thebeginning or end of a document or are characterized by the presence ofthe pattern (CTU, FTU), wherein FTU is the beginning of a new FL. TheSearch Term (ST) Layer 306 is the actual entry provided by the InputInterface.

The Posit Block (PB) Layer 307 is a grouping of posits that contain oneor more repetitions of a search term. The posits vary in length based onruntime results. They may contain other TUs that are not part of thesearch terms, but occur within constraints between the STs that arefound. The Term Unit (TU) Layer 308 is a term unit, such as a word,number, or code, that is separated by a space or other known TUdelimiter for the language or syntax being used.

In block 202, the Indexer writes the ISet member variables to the index.Any descriptors required to be available to eliminate ISet members areconsidered search criteria and are established therefore based onimplementation. Once such ISet member variables are known, they arepopulated during processing and then available for addition to the indexfor storage.

In block 203, the Indexer optionally writes SU group variables to theindex. As an optional step, there may be a need to further identify anindividual index, especially in distributed environments. Therefore,many of the ISet member group variables listed above, as well as othersdeemed necessary by implementation, may be established. These can bestored in a reserved place in the index, usually at the top, and occuronly once per group in the first index in such a group.

In block 204, the Indexer analyzes each TU and assigns a windex value.Each TU is analyzed for what kind of value it has, either CTU or FTU,and is therefore assigned a windex value based on which value. This isdone through the establishment of a set of CTU values within a language.In addition, in languages such as English that contain punctuationrequire different handling, and these may also be established in a set.Based on the FTU and the possible punctuation set, the windex value isknown and assignable. Any other value not already used by the indexerfor a specific scope (such as ISet universe or ISet group) is assigned aCTU value sequentially, after the range of the FTU and possiblepunctuation values.

In block 205, the Indexer calculates the posit attributes. Positattributes include information that relates to the TU at that point inthe document. The calculation that is typically performed is afractional length calculation. This calculation is based on the patternand defines the fractional length is occurs in the document. Any lengthat or below a certain number is considered an FTU. That FL continuesuntil the pattern changes to indicate that a CTU is adjacent to an FTU,and that will start a new fractional length. Note that fractional lengthdoes not correspond to a language phrase. This organizes the documentinto grammatical units that can be further processed. This is the basicposit attribute that is common to all forms of documents, and that canoccur in both structured and unstructured documents. This output isprovided to the RealTime Search component 103.

The Indexer works with four types of posit attributes. The first is afractional length posit. The fractional length indicates the length ofthe posit. For example, consider the following “The dog went home.” Inthis case, the fractional length indicator is applied to “the” and is aset of 4. The second type of posit attribute is a duplicate attribute.This attribute indicates that a document is a duplicate of anotherdocument or a part of a document is a duplicate of another part. Thisattribute indicates how many posits are duplicated. For example,consider the following “The dog went home. He had found his bone.” Inthis case, the duplicate attribute is applied to “the” and is set at 5.This indicates that “The dog went home.” has been repeated elsewhere inthe ISet universe. The third type of posit attribute is a topical searchattribute. This attribute identifies one or more topics that thedocument is associated with. For example, consider the following “Thedog went to the store. Then the dog decided to go for a ride in thecar.” In this case, the posit attribute that indicates the topic “dog”usually requiring the beginning and end of the topic length, may eitherbe applied to the posit in the index's posit listing or in the bestmode, is indicated at the ISet member section for each ISet member thatcontains topical information. The fourth type of posit attribute is forstructured documents. These attributes indicate where structured fieldsbegin and end. In documents that are structured or unstructured, only anISet member variable needs to be set. If the document containsstructured segments, then the beginning and ending posits for eachsegment must be known. These may either be stored at the posit sectionin the index, or in the best mode, is indicated at the ISet membersection for each ISet member that contains structured segments (i.e.,not all structured).

Maintainer Module 110

The last module of the Pre-Search component 101 is the Maintainer module110, which is an optional module. The Maintainer module 110 updates theISet with changes to the source documents of the associated informationrepository. Thus, any additions, deletions, and/or modifications (e.g.updates) to the documents of the repository would be located by theMaintainer module 110. After locating a change to the repository, thismodule may cause the Pre-Search component 101 to index only the changedportions of the repository, or may cause the entire repository to bereindexed. This may involve operating some or all of the modules of thePre-Search component. The Maintainer module 110 may operate at aspecific time(s) and/or specified time intervals. This module may becustomized for a given implementation.

RunTime Search Component 102

The RunTime Search component 102 is operative after the Pre-Searchcomponent 101 and either prior to or concurrent with the RealTime Searchcomponent 103. The RunTime Search component is optional, and providescaching operations and index refining, such as duplicate blocking andtopical searching. Embodiments of the search engine may have some or allof the modules of the RunTime Search component.

Duplicate Blocker Module 111

One optional module of the RunTime Search component is the DuplicateBlocker module 111. This module operates to identify documents of therepository that have duplicate parts or are duplicates of otherdocuments in the repository. This module then modifies the ISet of theIndexer 109 to reflect duplications. This notifies other systems andusers of similar documents that are in use as well as the use ofungrammatical term unit (TU) duplication within a document. TheDuplicate Blocker normally stores information in the Indexer for anyISet documents containing duplications, either as a set of TUs (i.e., TUduplication or TUD) repeated outside of grammar constraints, or parts orall of a document that repeat within the searchable universe. Note thatduplications may be either a set of TUs repeated outside of grammarand/or syntax constraints, or parts or all of a document that repeatwithin the searchable universe. This module makes searches moreefficient.

The level of precision that the module allows is controllable based onuser or system requirements. For instance, document duplication has twobasic types, namely section and full document duplication (ISet Member).Section duplication occurs when a portion or section of the document isexactly the same. Therefore, it is sometimes necessary when thistolerance is turned on that the segment of the duplication is noted.This is done by a length counter to indicate the number of posits thatare duplicated. Lastly, the TUD is calibrated based on the number of TUsthat are found to have duplicated.

The TUD operates by indicating documents that contain multiple term unitinstances that appear without grammatical form. The TUD operates withineach document. For instance, a common way to increase relevance is toconstantly repeat a term or set of terms over and over again, such as“dog house dog house dog house dog house dog house”. The TUD can detectthis because of the ability to quantify FLs. For instance, if a FLcontinuously repeats with the same terms, including the FTUs, then thereis no grammatical meaning, and therefore this group should be blockedfrom consideration as to the relevance of its parent document. Thisoccurs in the Internet by either invisible text, header entries, incommented code blocks, or other devices. Since the goal is always toincrease the word count, which in turn, should increase relevance, thesearch engine will not tolerate certain conditions. Therefore, for eachsearch type, the search engine can incorporate TUD density calculationsto protect the user from such types of inflated document scoring.

If a document is fully duplicated, then there are two conditions, namelyexact and subset duplication. In exact duplication, document A anddocument B are exactly the same, including the length of the document inposits and all other TU block attributes. In subset duplication,document A is fully contained within document B. In fact, it may bepossible that document A and document C are fully contained in documentB, and so on. All the TU block attributes that are in both document Aand B would be exactly the same as those in document C for that sectionwhere the match occurs.

Topical Searcher Module 112

Another optional module of the RunTime Search component is the TopicalSearcher module 112. This module analyzes documents in a part or all ofthe searchable universe to determine the topics that exist, both withineach document and within groups of documents. The Topical Searchermodule 112 uses the ISet results of the Pre-Search component 101 toefficiently calculate the topical intervals (TIs) that exist for thesearchable universe. The results of this module can be stored directlyin the ISet of the Indexer 109 for maximum flexibility of use.

Topical search involves the quantification of identifiable section(s) ofa document that relate to a central theme or a topic. In searching, theneed to qualify a search term (ST) by restricting it using anidentifiable topic length or interval is a useful function in manycases. In order to accomplish this, the document must first be indexedby the Pre-Search component 101, as described above. The grammaticaland/or syntactical boundaries established by the initial indexing areused, as well as the TU type determination. If required, the DuplicateBlocker module 111 should be run before this module to detectungrammatical/unsyntactical TU duplications, if required or necessary bythe implementation. Then, the Topical Searcher can function. Anexemplary process 400 is shown in FIG. 4.

Topical search occurs in two phases, namely an Intradocument phase 401and an Interdocument phase 402. In the Intradocument phase 401, eachdocument is analyzed on its own merit for the topics that occur. Thephase involves locating the individual TUs that meet the requirementsfor the inclusion as potential topics, filtering out the noise TUs,which are the set of FTUs and CTUs that are nontopical for the givenComm ID (these can be stored in the thesaurus or general dictionary).Note that filtered words may be affected by tolerances. A frequencyanalysis may optionally be done to determine the potential topic set.Then, a modified form of the f-Fetch and other Intradoc t-Fetch 403operations are used to determine those topics that contain multiple TUs.Multiple-TU topics are then further refined, if necessary, by a set ofcomparisons called Multiple-TU Commonality. Then the list of potentialtopics is adjusted. Optionally, another filter may be run on the topics.The potential topics now include both single-TU and multiple-TUs. Thepotential topics are now in their initial ranked order.

Single-TU topic posits that occur to multi-TU topics are eliminated. Atthis point, both single-TU and multiple-TU potential topics have theirTIs recalculated and their overlap values adjusted accordingly. Fromthis, it is possible to determine the breadth of the topic's scope,which determines the main topic and subtopic values. The distributionanalysis is also recalculated, which is designed to limit the size ofthe TI based on spurious and nonconsistent usage within the TI length.This provides an overlap for each TI. Once these have been completed,the main topic, if it exists, is determined, along with the subtopics inthe Topic List Document 404.

Main topics are identified as those that have a longer length of othertopics in the document. A subtopic either is fully contained within amain topic, if one exists, or is completely separate, as this ishierarchical in nature. If no main topic exists for a document, thenonly subtopics are returned and the main topic value is null. Further,subtopics are also hierarchically related by using the overlapcharacteristic; if they are overlapped within another subtopic, thenthey are a child of that subtopic. A terminating point of a hierarchy isa subtopic that has no subtopic contained within it. If required by animplementation, these are then stored in the index in the TU block sothey are available for search requests.

In the Interdocument phase 402, the results from the Intradocument phaseform the basis for the Interdocument analysis. In Interdocumentanalysis, a group of documents are analyzed for topics that are commonto them by using modified form of the f-Fetch and a set of Interdoct-Fetch 407 operations. Two types of Interdocument analysis is possible,namely Hierarchical 405 and Nonhierarchical 406. In hierarchicalanalysis, the hierarchy from the Intradocument analysis is preserved;that is, the ordering of main and subtopics must match in order to beincluded. For instance, if a main topic =“canine” in document A and asubtopic =“canine” in document B, then if the threshold for “canine” tobe included in the results is met when “canine”=main topic, onlydocument A and the others that contain “canine” as a main topic areincluded in the resulting Interdocument hierarchy. Also, all thesubtopics under “canine” also reflect the underlying hierarchy fromIntradocument analysis.

In nonhierarchical analysis, the main and subtopic hierarchy from theintradocument is ignored, and only the occurrence of the topic isnecessary for inclusion into an interdocument topic listing. Forinstance, only the occurrence of the topic “canine” is required. Usingthe example above, “canine” as a main topic and “canine” as a subtopicwould mean that both document A and document B would be listed asdocuments under the topic “canine”. This type of search is useful ingeneral search applications where the amount of the document thatcontains the term is not required or that a hierarchical understandingof how the topic was derived, such as the subtopic “husky” in document Ais not important.

The Topical Searcher module 112 can be refined like any other module bythe use of tolerances. For instance, the synonym tolerance may be usedat both the TU or the fractional length (FL) level to capture synonymsthat for the implementation are considered to be close enough to beconsidered the same repetition of a topic. In addition, the synonymtolerance may also be used to determine the uniqueness of a TU withinthe document. While multiple tolerated TUs within the document wouldcount as topic indicators, a term with a high number of synonyms versusterms with low number of synonyms distinguish topics better, andtherefore may be used to modify the order or even the existence ofpotential topics in come implementations. Other tolerances at theFL-functional-scope level and below may be used with the TopicalSearcher to further refine the results, such as stemming, acronyms, andabbreviations, among others.

The Topical Searcher module 112 can function in one of many scopes; thisis especially useful in the distributed implementations of the searchengine. A scope is defined as what portion of the searchable universeshould be included in the interdocument phase; this allows for documentsto be divided in a variety of means, including departments, disciplines,or other delineations. For instance, in the same searchable universe,topical search can be run for a group of documents in a particularnetwork node; another topical search may be run for a group of documentsin a geographical location, which may include the first group ofdocuments, yielding potentially different interdocument topical results.

Cacher Module 113

A further optional module of the RunTime Search component is the Cachermodule 113, which is a cache or a memory store of the ISet of theIndexer that is made available to the RealTime Search component 103during search operations. In the Search Engine 100, ISets and/or indexfiles may be cached for several reasons. Since the Search Engine 100 hasno locality required of its information, the ISet does not need to bestored locally with the RealTime Search component 103. Thus, forarrangements where the ISet is stored distant from the RealTime Searchcomponent 103, a cached stored version local with the RealTime Searchcomponent 103 may be used.

The Cacher module 113 acts as a relay between the storage device and thememory location of the RealTime Search component 103. The RealTimeSearch component will call the Cacher, if required by an implementation,to get the Indexer information loaded into memory so that there islittle or no latency in processing the data. Since the documents thatcomprise the Indexer must be analyzed on their own merit, the Cachermust be able to send data in sufficiently large enough chunks to bepractical for a given network configuration.

Thus, one function of the Cacher is therefore to keep things in memoryso that the RealTime Search component's host machine does not need tostore the information except when its necessary. For multithreadedRealTime Search, serving several search requests at the same time, thereis a high possibility that the same index files will be required on arepeated basis. However, the index files do not need to be in memory forlong periods of time, minimizing the space problem. This is done inexchange for easier maintenance of the index files, which is vital asdocuments become more transactional in nature.

RealTime Search Component 103

The RealTime Search component 103 operates after the Pre-Searchcomponent 101 and either after or concurrent with the RunTime Searchcomponent 102. The RealTime component 103 provides handling of the inputsearch terms, matching and filtering operations with the ISet, numericalcomputations and relevance scoring, and aggregation of the searchresults. The component begins operation when a search request, in theform of one or more ST and/or search criteria (e.g., TOS, date range,etc.), is received from the Input Interface 105 by the Inputer module114. This input may come from either a user or another system. Thiscomponent then processes the search request based on the parameters setforth by the user or system, as well as internal search engineparameters to locate all MRPs in each document available at the time ofloading the index or indices into memory. This process completes whenthe relevance calculations produce the final scoring, and the rank andsort applied to the results are complete.

Note that the search term always contains at least one content TU (CTU)or may contain more CTUs, and/or it may contain one or more functionalTUs (FTUs). All CTUs of a search term are considered “keywords” (KWs)for the purpose of searching. Note that in most languages, includingEnglish, any set of characters (e.g., words) or symbols separated by aspace, will form a TU.

Input Interface

Note that in the embodiment shown in FIG. 1, the Input Interface 105 isnot part of the RealTime Search component 103, but is discussed here forillustrative purposes. Other embodiments may have the functions of theInput Interface 105 internal to the RealTime Search component 103 orcombined with the Inputer module 114.

The Input Interface provides a way for a user to operate the searchengine, and search the indexes for a desired search term. Note that thespecific interface design is subject to the needs of a givenimplementation. For example, FIG. 5 depicts an example 500 of an inputinterface that may be used for basic searches, such as a b-Fetch,e-Fetch, or f-Fetch, or may be used for discovery searches, such as at-Fetch. As shown in FIG. 5, the Input Interface may be a graphical userinterface. These search types will be explained in more detail below.FIG. 6 depicts an example of a GUI that is presented to a user afterselection of the letter D from the GUI of FIG. 5. Selecting the letter“D” for a topic category causes a drop-down menu to appear that offersall the topics starting with “D” from index files. FIG. 6 alsoillustrates the option of continuing the subtopic drill down orreturning to the previous screen to restart the topic search or toperform a Basic Search. FIG. 7 depicts an example of a GUI that ispresented to a user after selection of the expert mode button from theGUI of FIG. 5. Note that the GUIs of FIGS. 5-7 are for illustrationpurposes only, as other GUIs could be used.

Inputer Module 114

The Inputer module 114 is an entry point into the search engine. In thisarrangement, the Input Interface 105 operates to convert the searchrequest into a form usable by the search engine. Note that severaldifferent types of interfaces may be serviced by the same applicationbased entirely on implementation requirements. The Inputer also receivesthe ISet from the Pre-Search component 101 and/or the RunTime Searchcomponent 102. Note that during the RealTime Search componentoperations, data may be transferred from the RunTime Search component102, (e.g. the caching operation), which is used to store informationfor real-time operations, if necessary. The search terms are processedthrough two sequential modules, namely Normalizer module 115 and theTolerator module 117.

A search request (SR), in the form of an ST and its attributes or searchcriteria (e.g., TOS, date range, etc.), is made through the Inputermodule 114. The Inputer provides an interface, either with anothersystem or directly with a user, that provides the ST and its searchcriteria to be used by the search engine. The module takes data from theInput Interface and routes it to the correct modules within the RealTimeSearch component 103, based on whether the input deals with the ST orthe document attributes (such as modified date), or topic qualification(i.e., restricting the scope to specific topics).

Input data is typically in the format of a data packet that comprises anetwork ID, a user ID, docscope variables (optional), tolerances(optional), TOS (optional), ST, Comm ID, drill down set (optional),and/or other fields, if needed. The network ID value is the address ofthe sender, such as the IP address of the sender. This can be provided,for instance, in the HTTP interface, and it can be any addressing size.The user ID is optional, and is used to handle access control list (ACL)values. The network ID plus the randomly generated search ID valueequals the search request ID or SRID, if the user ID is not used; elsethe user ID is ANDed to the randomly generated search ID to make theSRID. The docscope variables are the document attributes that arerequired by the user interface to be sent. This is an optional field,since some interfaces will not require this or some implementations willhave default values. Tolerances are named as text so that there is noneed to keep translation tables. The tolerances should be namedconsistently throughout, but the order in which they are stored willchange. Therefore, the text version should be named by the interface andsent to the Inputer. This is an optional field, since some interfaceswill not require this or some implementations will have default values.The TOS value should be fixed throughout the application and only has tosupport the number of TOSs for an implementation. The ST length has amaximum based on implementation, and the length is tested internally.The Comm ID field is only required if a RealTime Search componentsupports more than one language or syntax. The Comm ID has a defaultvalue of English. Note that other languages can be added as needed. Thedrill down field is reserved for application use only. Applicationdevelopers who wish to perform operations that require specific drilldown information will use this field to indicate the range of documentsto be included in the drill down and other data. Other fields may beadded depending on implementation requirements; these are added to theInput Interface as well as to the Inputer. Note that at least one TOSmust be identified if the Topical Searcher module 112 is not used;otherwise, a topic search would count as a TOS.

Normalizer Module 115

The Normalizer module 115 converts the search terms into a faster, moreefficient readable input form using the current windex. The module maybe called as many times as there are windexes encountered in the ISet.This input form is sent to the Tolerator module 117. Then, TU structuralanalysis is done.

The Normalizer takes the ST as inputted by the user and convert the STinto the form that is used for determining intersections between the STand the searchable universe. There are two basic phases tonormalization, namely windex translation and TU structural analysis. Inwindex translation, the current windex is identified for each index fileand used to translate the ST. In structural analysis, the FLs, TU types,and posits are assigned. The output of the Normalizer module containsall the necessary information for processing the ST. The windextranslation may be re-run, and if multiple windexes are used in thesearchable universe.

The Normalizer keeps track of the windex and index file relation inorder to properly prepare the ST. For instance, the Normalizer should besent a message after the Filter module 116 has processed the last indexfile for a specific windex. This should indicate to the Normalizer thata windex translation is necessary for the ST for the search engine tocontinue processing index file items. Windex translation is the processof converting the ST text into the current index-encoded values. Thereis a 1:1 correspondence between the number of windexes for a givenimplementation and the number of times windex translation is done. Themain output of windex translation is, in order, the windex equivalentsof the TUs used in the ST.

Punctuation, capitalization and the wildcard tolerances affect thewindex translation by modifying the scope of the initial binary searchinto the windex array. This is explained further with regards to theTolerator module 117.

Punctuation, if used in the entry, is always included in the windexlisting. The Tolerator will either keep or discard punctuation used inthe entry based on the tolerated values. Therefore, punctuation isconsidered a pass-through value and is assigned a windex value ifrequired (used) by an implementation.

If capitalization tolerances are in effect, then a match of “dog” and“Dog” are not equal; therefore, if only dog is found, then the entry isnot considered a match. If capitalization tolerances are not set, then“dog” and “Dog” are equal, and both would be considered a match. Thismust be handled in the process, which marks for each FL-level and belowtolerance the range of effect of the tolerance, based on the length inposits as indicated by the input message or Input Interface. Alltolerances must be indicated by only the tolerances like capitalization,wildcard, and Boolean processing issues for windex translation. Onewildcard is used per letter in the example; this may be changed based onimplementation since a special character or an input indicator may beused to indicate the number of wildcard characters. Thusly, “d*g:” wouldnot find “ding” since this character in the current implementation onlyindicates a single character.

If a wildcard is used, such as in “d*g”, then all TUs in the windex thatmatch that pattern are returned, and a grouping and value of thetolerance are shown. The order is alphabetical, so “dig” comes before“dog” and “dog” comes before “dug”. There would be three wildcardtolerated values of equal weight returned by this function.

A Boolean tolerance is used when a posit has more than one valueassociated with it or a group of posits has more than one valueassociated with it. Therefore, the windex equivalents need to be foundfor the terms, without regard to whether a group is found or not. Thisrequires both a grouping value and the extra terms that are a part ofeach posit. The Boolean is an input to the Normalizer, so the range isknown. This allows the conversion for the windexes to take place. Forinstance, if the ST=The dog BOOLEAN OR husky went shopping, then either“dog” or “husky” must be found or no value is found in the windex forthat posit in the ST.

Once the windex translation is complete, the TUs are in order with thewindex equivalents. The TU structural analysis is done based on the CommID supplied by the windex. The posits are simply the order of thewindexes. The FTU range indicates where the FL breaks are located, sothe FL number can be identified as well as the TU Type. Once this isdone, then the ST is considered to be normalized. The process by whichthe FTU is determined is discussed in the Indexer module section, as inthe TU type and FL breaks.

Tolerator Module 117

The Tolerator module 117, is an optional module, that expands the searchterm input by including any synonyms, acronyms, etc., that are in theacceptable range of the individual switches. The output from theTolerator is then sent to the Posit Block Collector module 118.

The Tolerator module takes as input the output of the Normalizer 115 andpopulates, if needed, any tolerance data, including all lookups of datastores such as a thesaurus. The number of tolerances supported by searchengine varies by implementation and may include: synonym, antonym,homonym, abbreviation, capitalization, punctuation, synonym, frequentmisspelling, stemming, boolean, duplicated term, a number, number usage,a formula, and etc. Tolerances that are used in calculating this moduleoccur in the fractional length-level and below functional scope.

This module determines the required expansion of all data points thatare impacted by tolerances. Its main output is to indicate the range ofacceptable matches by using a set of integers. Tolerance ranges definethe scope of the tolerance when used in conjunction with the ST. In somecases, the tolerance will operate only at a specific functional scope,so no indication of range is necessary. With TU- and FL-leveltolerances, it is always necessary to identify, in posits, the start andfinish of the range for which the tolerance applies.

The posit range is indicated by subtracting the posit_(Y) from theposit_(X) (last member in range from 1^(st) member in range). If thisresult is zero, then the TU-level scope applies and the tolerance istreated as a TU-level tolerance. If this result is greater than zero,then the FL-level scope applies and the tolerance is treated as aFL-level tolerance. The Input Interface 105 only needs to describe therange in terms of posits in the ST. The value of the tolerance may betime based, and may occur depending on the individual tolerance, in anyFL.

Synonym and other lookup tolerances (e.g. stemming, acronym, etc.) occurat run-time based on the ST, so the output from the Normalizer indicatesthat a lookup is necessary. The value is changed by the Tolerator sothat the level indicated by the lookup is returned for each item in thelookup that is related. Boolean tolerances are done in the RealTimeSearch component 103 exclusively, since it requires input from the InputInterface. The TUD is checked when the ST=TUD for a given document. Thecapitalization, punctuation, and other such tolerances are set atPre-Search for an implementation.

The set of tolerances that are used in the Tolerator are broken downinto three functional levels, and these are the constraints in whichthey operate. Character-based tolerances operate at the character (orletter/symbol in language) and depending on the type of character, thesystem reacts differently. The tolerances that function in this scopeare punctuation, capitalization, wildcard, and other such tolerances.The TU functional scope is simply the TU itself The FL is a group of TUsthat operate together. Therefore, the FL is a superset of TUs. There isusually an associative relation between a TU and a FL in several of thetolerances; in fact, they have the same types of tolerances that operateon them. These include: Boolean, synonym, acronym/abbreviation, TUD, andothers. The type of tolerance is based on the functional scope andtherefore affects how the grouping value is calculated with the STarray. If a tolerance is to be applied at the FL level, this means thatthe input string contains the breaks where the tolerance should beapplied or a lookup indicates that an FL grouping is necessary forequivalence.

Filter Module 116

The ISet, or searchable universe, is passed through the Filter module116, which removes any documents with non-compliant attributes from theISet and passes the remaining ISet members to the Posit Block Collectormodule 118. Note that this module is optional.

This module removes documents that do not match the document scopevariables in the inputer search criteria. Common uses may be to excludedocuments that do not have the correct date, are not in a required fileformat (such as doc), topic, etc. This is a simple comparison, and ifthe comparison is false the document is eliminated from consideration.Only documents that pass through this module are processed. Anotherfunction of the Filter is to communicate with the Cacher 113 for theactual index files that are required to be loaded. If no cacher is used,then the Filter must be able to read index files and perform itsnecessary operations and outputs. The output of this module is theunique document structure that is sent to the Posit Block Collector 118.

The number of criteria used in the filtering process is based entirelyon the number of document scope variables supported by a searchableuniverse. However, a variable number of document scope variables will beavailable on a document-by-document basis. Therefore, some documentswill not contain a filterable value or values. The handling of thiscondition is a binary operation, and can be changed to support anyimplementation. The default is that a no value condition passes thatparticular filter test. If a document passes all the filters, then it isput into an structure format that is the only information required toperform all RealTime Search operations.

Posit Block Collector 118

The Posit Block Collector 118 determines which of the remainingdocuments meet threshold requirements. The posit block module eliminatesany out-of-bound ISet members by, primarily, determining TU thresholdsand creating a full posit block matrix. In addition, the preliminarydocument threshold (docT) is determined and used to prevent unnecessaryprocessing of documents not meeting the threshold. The output of thePosit Block Collector 118 is a set of integers that indicate the fullscope of the acceptable ISet members, and is provided to the Refinermodule 119. A matrix may be implemented as a dynamic structure like alinked list or a tree as well as a simple array.

This module performs several functions, namely TU threshold; initialdocument threshold (docT) determination; and PB builder. One input usedby the module is the ST array from the Normalizer 115. Other data isreceived from the Filter. After initial reception of data from theFilter for a specific SRID, the module must hold all such data until nomore documents exist for that SRID. This is necessary to begin initialdocT determination (IDD), which comprises three parts, namely create amultipart strata, randomly group the documents in the strata; processeach document in the group and afterwards, receive a docT initial value.

The docT initial value is used in the TU threshold, which determines ifall the TUs in the ST are in the document; and if they are not, then thedocument is eliminated. The TU threshold is impacted by toleranceencoding. Therefore, the tolerances set in the Tolerator affect theoutcome of this process. The TU blocks from the index are the only datastored from this point on. The remainder of the indexed ISet member isno longer necessary, and the document structure is reformed with onlythe pertinent parts. The docT score may change over time after theinitial docT document set has been processed.

Note that the TU threshold is impacted by tolerance encoding. Therefore,the tolerances set in the Tolerator affect the outcome of this process.The TU blocks from the index are the only data stored from this pointon. The remainder of the indexed ISet member is no longer necessary, andthe document structure is reformed with only the pertinent parts. If theTU threshold output does not contain enough raw material to meet thedocT threshold, then the file is eliminated. The docT is establishedusually on a random sampling of document before it can be set, if docTis used. Once it is established, the docT initial value is used in theTU threshold, which determines if all the TUs in the ST are in thedocument; and if they are not, then the document is eliminated. The docTscore may change over time after the initial docT document set has beenprocessed.

The following is a list of equations for the docT filtering operationsthat occur for different search types. These indicate whether or not adocument should be processed based on its potential maximum relevancescore.

If[(k6)(N107)Σ_((k7)(N107))[(k2)(N107)]+(k8)(N107)Σ_((k7)N107)[(k4)(N103)]]divided by RC _(b)≧1, then continue, else stop

Equation 1. b-Fetch DocT Filter.

The above equation is used for b-Fetch type searches. This search isfurther explained below. It is currently preferable to have k2=1 to 100;k4=1 to 100; k6=2.5; k7=0.5; and k8=0.034.

If [(k4)(N105)Σ_((k5)N105)[(k2)N105)]] divided by RC _(e)≧1, thencontinue, else stop

Equation 2. e-Fetch DocT Filter.

The above equation is used for e-Fetch type searches. This search isfurther explained below. It is currently preferable to have k2=1 to 100;k4=0.5; and k5=0.5.

If [(k7)(k8)(k2)(N106)(N106)] divided by RC_(f)≧1, then continue, elsestop.

Equation 3. f-Fetch DocT Filter.

The above equation is used for f-Fetch type searches. This search isfurther explained below. It is currently preferable to have k2=1 to 100;k7=0.5; and k8=0.5.

If passed by the docT filter, the document is ready for the PB builder.This refers to the intervals of posits that contain the ST within theconstraints as indicated by the TOS. There is an exact correlation inthe e-Fetch between the ST and the ISet member required; b-Fetch usesthe N101 constraint only; the f-Fetch has several different constraintsthat are applied. The f-Fetch requires that the constraints for N108,N109, and N110 be calculated during the PB creation. The max length ofthe PB for the f-Fetch is set based on the size of the ST and thepossibility of N110. If N110 is found to possibly be true, then the maxsize of the PB would be ST*3. If N110 is not found to be possible, thenthe max size of the PB is ST*2. N108 and N109 therefore affect the sizeof the PB. If they cause the size of the PB to exceed the maximum size,then the PB is invalid. If all PBs are found to be invalid by thisprocess, the document is eliminated. The TOS is a qualifier, andtherefore has no direct constraint effect. The r-Fetch, however, doesimpact the formation of PBs based on the structure indicated, such ascolumn break or row break.

The PBs should process the tolerances to determine what PB is thestrongest case. The general rule is the longer the PB and the morerepetitions it contains within the correct TOS constraints, then thebetter it is. If there is a tie, then the original ST should be used.For instance, the original ST term has the strongest value, unless theBOOLEAN OR is true (in that case, both have the same value). For thesynonym and other TU and FL functional-scope tolerances, the toleratedterms are only considered if only tolerated terms are left in thepotential PBs. The highest scoring tolerance is then considered thefinal PB. Only one PB per ISet member length is returned by this module.

The output of this module is the refinement of the document structuresuch that all the PBs that are required for processing are now stored.All other modules will use the PBs for the remainder of processing.

Refiner Module 119

The Refiner module 119 is used to perform combinatorial searchfunctions, set the ISet length corrector, calculates the docT, andoperates as a transfer agent for information passed to the Processormodule 120. The ISet length corrector (ILC) normalizes the relevancescorers for ISet universes that contain variation in the number ofposits found for an ISet member. The Refiner module 119 also receivesinformation after the Processor module 120, operates on the information,and then passes the refined information to the Aggregator module 121.

The Refiner module receives each document from the Posit Block Collector118, and performs several functions, namely handling structural elementsof a document; passing the document to the Processor; checking thereturn by running the r-Fetch, if structured; calculating the ISetlength corrector (ILC) if required; and calculating the docT.

For structured documents or structured segments, the r-Fetch processmust be run to align the PBs so that the Processor receives the correctinformation; otherwise, the intermediate output of this module is thedocument's PBs which are sent to the Processor module. Once the documentis returned from the Processor, it has an initial relevance score thatmust be refined under the following conditions. If a document is largelyunstructured but contains structured segments, such as a table, thenthose segments need to be processed afterwards by the r-Fetch to get thefinal relevance score. All structured documents must be processed by ther-Fetch to get its relevance score.

Depending on the length of the document, the ILC may be required torefine the relevance score to adjust for length discrepancies thataffect smaller, yet more relevant, documents. A weighing factor is usedto make this adjustment after the Processor provides the initialrelevance score. Also, depending on the stage at which the documentshave been passed through the Refiner, it may be necessary to calculatean initial docT or recalibrate a current docT if the trigger has beenmet.

The ILC equation is used when the document's relevance as a whole (notjust the MRPs) need to be considered. Since the equations areindependent of document size, the ILC is used to introduce the documentsize as part of the relevance score. Therefore, the ISet size (i.e., thenumber of posits) is related to the MRP size in posits. The ratio isused to determine this relation MRP posit length/ISet posit length. Thecloser the ratio approaches one, the larger the increase on the finalrelevance score. The closer the ratio approaches zero, the larger thedecrease on the final relevance score. The ILC equation is expressed asthe following:

(MRP Posit Length/ISet Posit Length)*relevance score=ILC relevance.

Equation 4. ILC Equation.

Hence, all documents are passed through the docT filter based onrelevance score only. If the document equals or exceeds the docT score,then the document is sent to the Aggregator module. If it fails, it isremoved from processing. On the initial docT filter calculation, thedocuments may be pruned in the Aggregator, if required by animplementation. MRPs may also be scored individually and ranked/grouped.The docT may not be used when MRPs only are required.

Processor Module 120

The Processor module 120 communicates to and from the Refiner module119, and computes the NSet values, relevance scores, and the mostrelevant parts (MRPs) for the search. After the Processor module 120completes its functions, its output is sent back to the Refiner module119.

This module takes as input the PB lengths for a document as assigned bythe Refiner, along with the qualifiers to the PBs that are containedwithin the document structure. Other elements within the documentstructure are ignored by this module. The Processor calculates theactual determination of relevance of the basic TOS (e.g. f-Fetch,e-Fetch, and b-Fetch) using a set of numbers (NSet). This is completelynumeric and is independent of Comm ID, the ST size, or other text thatcomprise the searchable universe. The NSet is used to calculate therelevance scores and create the MRPs. The output is the relevance scoreplus the MRPs, in order from strongest to weakest, of each document orstructured document or segment. However, the relevance score may beprocessed on a PB by PB basis and therefore the output is only the scorefor the PB. This is especially true of structured documents. The Refinerwould aggregate these results if document relevance is required.

The NSet is calculated based on the values in the PB, as well as thequality of the PB, based on the TOS value. The NSets represent a set ofconstraints that are necessary to process the TOS. Each TOS has a uniqueset of NSets that establish the grammatical/syntactical relations thatexist. The tolerated members of the PB are assigned a weighting factor.Any repetitions or even an entire PB may be eliminated if the NSetcalculations show that some constraint for that TOS has been violated.

Once the NSets are calculated, then the MRPs can be created. These arealso directly derived from the NSet calculations and indicates thelargest relevant grouping of repetitions within a section of a document.Based on NSet value, the MRPs can be put in order from strongest toweakest. The number of MRPs that can be returned can vary based onimplementation requirements; some implementations may choose not toreturn MRPs at all.

The final relevance score is determined using the equations for eachindividual TOS. All relevance is calculated at system runtime, as eachrelevance score is based entirely on the NSet and MRPs that were foundfor the document and is calculated on a document-by-document basis. TheProcessor outputs the relevance score and the MRPs, if required, to theRefiner.

All relevance determinations in the search engine are based on aconstraint model. A constraint refers to the length, usually in termunits, of a given number set (NSet) member, such as N10x (where “x” is avariable depending on the specific TOS being referenced).

There are three basic types of NSet constraints. The first is the lengthof the TUs that comprise the ST within an ISet member. This length isvariable based on the ST. For instance, the user may be looking for aparagraph in the ISet universe or he may simply be looking for theoccurrence of the term unit “dog”. The second is the length thatcomprises the occurrences of the repetition within a grammatically-basedlimit. The third is the length that comprises theminor-interval-constrained TU occurrences within a grammatically-baseddifference. Note that other constraints may be used to further refinethe ST and/or the ISet member. Each TOS has a set of internalconstraints. The Combinatorial searches also have a set of constraintsthat are independent of the basic TOS. In addition, there are a set ofconstraints that vary based on implementation, such as the use ofacronym callouts or document duplication (either in whole or part).These are referred to as “tolerances” and are a special case ofconstraints within search engine, see the discussion of the Tolerator117.

Aggregator Module 121

The Aggregator module 121 collects all the information about one or moreISet members and places the information in a single location for output,including the MRPs, document attributes, ranking, etc. The Aggregatormodule 121 may be a single-location data store, or may comprise ahierarchical chain of data stores, particularly if multiple instances ofsearch engines or several data stores are operating together on one ormore servers. If MRPs need to be translated back into the originallanguage, then MRP decoding may take place in this module. Multiplenetworks may use separate aggregators to maintain separate indexes andreal-time search components and still have a single aggregation point,if necessary, based on user or application needs.

This module usually receives the information from the Refiner on adocument-by-document basis, as well as the current docT after a changeto the docT has occurred. If only MRPs are required, then each MRP andrequired characteristics are used. The Aggregator's purpose is collect,as a single-location entity or as a hierarchal chain, all theinformation about an ISet member and place it in a single location forreturn to the calling interface along with the MRPs. It then aggregatesand sorts the documents, so that they may be processed for the user. Therelevance scores may be used to sort documents. The MRPs may also besorted in this manner if required for an implementation.

Each item (MRP or document) is placed in sorted order based on therelevance score. If there is a tie, then the modified date, alphabeticaldocument address/name, or other criteria may be used. The sort istypically from the most relevant (highest score) to the least relevantor those equal to the docT. When the docT is changed, it is sent to theAggregator. Any documents that do not meet the docT are eliminated. Thedocuments received by the Aggregator pass the refiner's docT filter atthe time the docT had a specific value. If that changes, then theAggregator should filter the results. After the entire ISet has beenprocessed, and all final documents have been sent to the Aggregator, thesort is complete and the documents are sent to the Returner for finalprocessing.

The optimal return type tolerance is processed by the Aggregator andmeasures the quality of ST, also known as search differentiation. Thisallows the user or return system gauge a ST for a specific ISet atlocating specific information. If a term is differentiated, it meansthere is a high variance in the score of each document with respect tothe entire index set. If a term is not differentiated, it means there isa low variance in the scoring of each document with respect to theentire index set. The calculation of differentiation done by the returntype always depends on the relevance scores. This however, does notmeasure the actual score, so a high scoring term across the ISet may bepoorly differentiated. The return type may be presented in the Returneras a graphic or as a text or not shown at all; in addition, the returntype can be used to trigger other searches.

The output of the Aggregator is the return document structure in sortedorder, sent as blocks of data to the Returner module 122 for formatting.In some implementations, MRP decoding occurs in this module, see thediscussion in the Returner module 122.

Post-Search Component 104

The Post-Search component 104 comprises the Returner module 122, whichafter receiving the RealTime Search results, puts the information in itsfinal form, such as in a web page. The information in the correct formis then returned to the Return Interface 106.

Post-Search operates when the RealTime Search component 103 hasoutputted its results and the data now needs to be put into the correctformat and returned to the user. This is after the results are known,and the correct format and shipment to the individual user or systemneeds to be determined and completed. The operations of this componentare complete when the user or system successfully receives the results.

Returner Module 122

The Returner module 122 receives the final form of the documentstructure in order from the Aggregator 121. For each SRID, the returnform variable is set. Data is moved into the return form, and not allfields from the document structure need to be used. As soon as the firstreturn screen or other initial interface is formed, it is sent to theReturn Interface 106.

The Returner requires the some information in order to correctly write aform, namely an output file format, such as HTML, custom applicationformat, etc. or even raw text, and data points that to be inserted intofile format, such a shell HTML file that contains paragraph tags toproperly insert MRPs.

Note that the drill down tolerance allows searchers to search withinresults using any criteria, but retaining enough information about thefirst search to make the second search effective. There are two basicchoices, namely an unrelated drill down with respect to score, or arelated drill down with the scores being compared as part of the resultprocessing.

It is possible to either store the original search parameters or tostore the original document addresses, in order. This leads to therequired parameters that must be processed by the Returner for correctform to send back to the Return Interface since the Returner does notmaintain state information. These parameters are the doclDs of allreturned documents in order, as well as the relevance scores for each.The basic idea is that a set of documents need to be acted on, so thePBs and other information from the first search is not required, onlythe docID (address) is necessary to run the Filter module 116 fordocuments. Documents would need to be read again from the Cacher in someimplementations.

Note that MRP decoding may be performed by the Returner or theAggregator. MRP decoding is a conversion from windex to TU. It requiresthe matching windex set for each MRP, which is stored as part of thereturn, and the MRPs. Each MRP is converted by reading the each windexvalue. All required information for the MRPs, including punctuation andcapitalization, if required by an implementation, is returned. Dependingon other specialty indexes, such as the findex, which stores formattinginformation; these may also be called during MRP decoding.

Return Interface 106

Note that in the embodiment shown in FIG. 1, the Return Interface 106 isnot part of the Post-Search component 104, but is discussed here forillustrative purposes. Other embodiments may have the functions of theReturn Interface 106 internal to the Post-Search component 104 orcombined with the Returner module 122.

The function of the Return Interface is to provide a way for the user toobserve the results of the operation of the search engine for a desiredsearch term. As with the Input Interface, specific interface designs aresubject to the needs of a given implementation. For illustrationpurposes, FIG. 8 depicts an example of a Return Interface 106 showingthe MRPs for each ISet member that meets the search criteria. Note thatthe interface may be a GUI. FIG. 8 also depicts the options ofperforming a sub-topic search based on the information contained in thediscovered ISet member's MRPs or entering a new search term.

Searching

The main focus of the search engine is the search intersection of thesearch terms and the ISet members. The following equation describes thebasic search function, represented as an intersection:

ST∩ISet | _(l) ^(n)

Equation 5. Basic search.

This equation reflects that searching is a binary operation. The firstterm of this equation is the search term or ST, which is theuser-entered string (i.e., search set). The second term is the ISet,which is the set of terms that comprise the range (“n”) of the searchuniverse that is assessable to the user, and where the required scope ofthe search based on user input is determined. An ISet member is a singleinstance of a document or other source in the searchable universe. Theintersection of the ST and ISet represents the results of the search,namely documents that contain the search terms or variants thereof.

There are several types of search (TOSs) that can be performed on thesearch engine. A user can condition the STs with respect to a desiredlevel of grammatical and/or syntactical usage. As described herein,there are three types of basis searches and there are two types ofcombinational searches. However, the search engine may be configured tooperate with other types of searches.

Basic Searches

There are three basic types of searches, namely a Bucket Search orb-Fetch, an Exact Fetch or e-Fetch, and a Flex Fetch or f-Fetch. A basicTOS is an expression of the intersection between the ST and ISet memberat its most fundamental level. The intersection has a grammatical orsyntactical element, that is reflected in how the constraints,intervals, and relevance equations are derived. Even if the ST'sgrammatical/syntactical value is not required to count a repetition ofthe ST, it is used to refine the posit block array (PB) intervals, andthe strength of the ISet Member in the relevance equation.

Bucket Fetch

A Bucket Fetch or b-Fetch TOS, is the end-user request for the retrievalof all searchable documents containing the ST in whole, in any TU order,or in any TU position. The search term may contain one or more TUs to anunlimited number of TUs. The search engine returns only those documentscontaining at least one appearance of each TU or those that meet therequired docT, in a form where they may be in exactly the same TU orderand TU position as in the original ST or they may be in any TU order orTU position relative to the original ST. Note that a Bucket Fetch has noconstraints associated with it.

For example, consider the search terms ST =“dog went store”. Each ISetmember must contain all the TUs comprising the ST regardless of TU orderor TU position to be considered possibly relevant. Thus, a documentcontaining “The store manager keeps a dog on guard at night after aburglar went into the store” is an example of an acceptable return for aBucket Fetch.

Equation 6 defines the b-Fetch relevance score associated with eachreturned ISet member. Note that RC is relevance equation.

RC _(b) =k1(N101)Σ_(N101)(k2(N102))+k3(N101)Σ_(N101)(k4(N103))+k5(N104)Σ_(N104){Σ_(N101)[k2(N102)(N105)]+k3(k4)(N106)+k2[N107−(N101)(N102)]

Equation 6. b-Fetch.

The following table describes the constraints (k) in the b-FetchEquation 6.

TABLE 1 Constraints in b-Fetch Equation 6. k1 Function that varies withoccurrence of N101 TUs k2 Function dependent on ST tolerance k3 Numericconstant based on N101 and N103 minor interval constrained TUs k4Function dependent on Fractional Length and TU layers k5 Function thatvaries with occurrence of N101, N102, and N105 TUs and TU sets

It is currently preferable to have k1=5; k2=1 to 100; k3=0.067, k4=1 to100 and k5=a minimum of 2.

The following table describes the terms used in b-Fetch Equation 6.

TABLE 2 Terms in b-Fetch Equation 6. N101 Number of minor-intervalconstrained TUs within ISetM length N102 Number of TU sets within minorISetM intervals N103 Number of non-constrained TUs within minor ISetMintervals N104 Number of major-interval constrained TUs within ISetMlength N105 Number of minor interval constrained TUs within major ISetMintervals N106 Number of non-constrained TUs within ISetM length N107Number of TU sets within ISetM length ISetM = ISet Member

Exact Fetch

An Exact Fetch or e-Fetch TOS or e-fetch is the end-user request for theretrieval of all searchable documents containing the ST precisely asentered, including ST TU order and ST TU position. An Exact Fetch TOS isused to locate a precise match of the ST in the searchable ISet. It maycontain from two to an unlimited number of TUs. The search engine willreturns those documents containing the precise ST, meaning whose contentand functional words are in the precise TU order and precise TU positionas in the original ST.

For example, consider the search term ST=“the dog went to the store”.Each ISet member must contain exactly this term in this exact TU orderand TU position to be considered possibly relevant.

Equation 7 defines the e-Fetch relevance score associated with eachreturned ISet members.

RC _(e) =k1 (N101)Σ_(N101) (k2(N102))+k3(N103)Σ_(N103){Σ_(N101)[k2(N102)(N104)]+k2[N105−(N101)(N102)]

Equation 7. e-Fetch

The following table describes the constraints (k) in e-Fetch Equation 7.

TABLE 3 Constraints in e-Fetch Equation 7. k1 Function that varies withoccurrence of N101 TUs k2 Function dependent on ST tolerance k3 Functionthat varies with occurrence of N101, N102, and N104 TUs and TU sets

It is currently preferable to have k1=2; k2=1 to 100; k3=a minimum of 2.

The following table describes the terms used in e Fetch Equation 7.

TABLE 4 Terms in e-Fetch Equation 7. N101 Number of minor-intervalconstrained TUs within ISetM length N102 Number of TU sets within minorISetM intervals N103 Number of major-interval constrained TUs withinISetM length N104 Number of minor interval constrained TUs within majorISetM intervals N105 Number of TU sets within ISetM length ISetM = ISetMember

Flex Fetch

A Flex Fetch or f-Fetch is the end-user request for the retrieval of allsearchable documents containing the ST within a range of TUs thatinclude either 1) ST constrained TU-position interruption and/or 2)constrained ST TU-order inversion. These constraints involve STaugmentation by either one or more other content TUs (CTUs) and/orfunctional TUs (FTUs), both within and external to the ST.

For example, consider the search terms comprising the phrase “smallengines” and the search returns “small gasoline engines”, “small dieselengines”, “small economical engines”, “engines that are small”, etc.“Engines” may be modified by insertions such as “gasoline” and“economical”, but does not contain nongrammatical or syntactical numberof them. Note that insertions become nongrammatical based on number whenthey exceed the number of terms in an ST, thereby not representing arelation. The use of inversion is also correctly constrained, and thuseach of the returns preserves the integrity of the ST. Furthermore, theoutput always contains all the CTUs of the ST, although it may containother TU(s) within its first and last terms (i.e., between “small” and“engines”), or it may be separated into two or more relevant parts, onlyif inversion is true.

As another example, consider the search terms ST=“the dog went to thestore”. Each ISet member must contain these terms, either as stated oras in “the dog went into the store” or “the dog Cody went into thedepartment store” for the ISet member to possibly be relevant. The orderand position may change, but are constrained by the rules of the grammarand/or syntax of the language to prevent nongrammatical variations fromoccurring. Another example illustrates this. Consider the search termsST=“blue jacket”. Each of the following ISet member extract would beconsidered nearly equivalent or equivalent: blue jacket; blue denimjacket; jacket in blue. In each case, no grammatical rules wereviolated. Note that a search engine user would not have to specify anycloseness between term units nor any other conditions. This would behandled by the search engine by its grammar-embedded functions.

As shown by the above examples, the search term should contains at leastone CTU and may contain two or more CTUs, and/or it may contain one ormore FTUs. All CTU members of a search term are considered “keywords”(KWs) for the purpose of searching. In most languages, includingEnglish, a TU is any set of characters (e.g., words) or symbolsseparated by a space.

An insertion is when a PB contains one or more other FTUs or CTUs bothwithin and external to the ST. The insertions are restricted to a set ofgrammatical or syntactical constraints, as well as the size of the ST.These are always determined at runtime, so no set values are required aseither part of the input. Inversion is described as the change in FLwhereby the last KW of the FL occurs in the previous FL. This means thatif the ST contains only one FL originally, the ISet member would havetwo FL. For example, ST=“the Siberian husky”, and the inversion is “thehusky of Siberian . . . ”=ISet member. Note that the TU “husky” occursin the previous FL and the remaining TU (in this case, just Siberian)occur in the next FL.

Equation 8 defines the f-Fetch relevance score associated with eachreturned ISet members.

RC _(f)=(N101)(N102)Σ_(N101)(N103)+k1(N102)(N104)Σ_(N104){Σ_(N101)[(N105)(N103)]}+k2[N105−(N101)(N102)]

where N103=Σ_(N107)(k3/N107)[(k2)(N107)−(k4)(N108)−(k5)(N109)−(k6)(N110)]

Equation 8. f-Fetch.

The following table describes the constraints (k) in f-Fetch Equation 8.

TABLE 5 Terms in f-Fetch Equation 8. k1 Function that variesw/occurrence of N101 TUs k2 Function dependent on ST tolerance k3Function that varies with occurrence of N101, N102, and N104 TUs and TUsets k4 Function that varies with occurrence of N108 k5 Function thatvaries with occurrence of N109 k6 Function that varies with occurrenceof N110

It is currently preferable to have k1=2; k2=1 to 100; k3=a minimum of 2,k4=0.25, k5=0.50, and k6=0.75.

The following table describes the terms used in f-Fetch Equation 8.

TABLE 6 Terms in f-Fetch Equation 8. N101 Number of minor-intervalconstrained TUs within ISetM length N102 Number of TU sets within minorISetM intervals N103 Number of net fractional interval constrained TUswithin ISetM length N104 Number of major-interval constrained TUs withinISetM length N105 Number of minor interval constrained TUs within majorISetM intervals N106 Number of TU sets within ISetM length N108 Numberof fractional interval constrained non-ST-split TUs N109 Number offractional interval constrained ST split TUs N110 Number of fractionalinterval constrained inverted TUs ISetM = ISet Member

Combinatorial Searches

There are two types of combinatorial searches, namely a Record Fetch orr-Fetch, and a Topical Fetch or t-Fetch. These searches add informationthat is necessary to process an SR that is outside the scope of the ST.In general, these searches condition the ISet members so that the SR canbe properly processed. Note that other combinational searches may beperformed with the search engine, such as a Query Fetch or q-Fetch, anda Multi-Media Fetch or m-Fetch.

Record Fetch

A Record Fetch or r-Fetch is a request to analyze structured documentsor segments of documents that are structured. A structure in thiscontext refers to the grouping of words, either by a column definition(as in a database), or in a columnar or row fashion with a loose(unenforced) relation (as in a word processing table). Such delineationsin the text mean that the grammatical relations are bounded not by theinherent grammar but by the length of a column or row. In anunstructured document, no such restriction exists. An unstructureddocument has no inherent relations indicated by any form, so thedocument is only analyzed for its grammatical and/or syntacticalattributes using the basic TOSs. The r-Fetch restricts the basic TOSsand constrains them to run within the correct lengths as indicated bysuch a structure. The r-Fetch is also used to rank both structured,unstructured documents with structured segments, and unstructureddocuments so that both can be properly compared.

Equation 9 defines the r-Fetch relevance score associated with eachreturned ISet members.

RC _(r)=Σ_(N101) +k1Σ_(N102)[Σ_(N103) ]+k2Σ_(N102)[Σ_(N104)]−k3Σ_(N102)[Σ_(N105) ]−k4Σ_(N102)[Σ_(N106)]

Equation 9. r-Fetch

The following table describes the constraints (k) in r-Fetch Equation 9.

TABLE 7 Constraints in r-Fetch Equation 9. k1 Function that varies withoccurrence of MRPs k2 Function that varies with occurrence of N104 k3Function that varies with occurrence of N105 k4 Function that varieswith occurrence of N106

It is currently preferable to have k1=a minimum of 1; k2=0.75; k3=0.25,and k4=0.50.

The following table describes the terms used in r-Fetch Equation 9.

TABLE 8 Terms in r-Fetch Equation 9. N101 RC_(bef) Score N102 Number ofPBs in the ISetM or ISet member Length N103 Number of MRPs in the j^(th)PB N104 Number of Primary keys in the i^(th) MRP of the j^(th) PB N105Number of Foreign keys in the i^(th) MRP of the j^(th) PB N106 Number ofGroup keys in the i^(th) MRP of the j^(th) PB ISetM = ISet Member

Topical Fetch

Topical Fetch is a combinatorial-discovery type of search that assignstopics to sections or entire ISet members. At the beginning, the TopicalFetch functions at the ISet member level, and therefore a set offunctions is performed on the document before any combination ispossible for a higher scope. First, all windex values for the documentare analyzed to determine if they can pass the topical filter, whichremoves noise TUs from the windex values of the document. The topicalfilter contains the entire set of FTUs for a specific Comm ID as well asa set of CTUs. A sample list of such CTUs are listed below; these arealso affected by the potential data store used by as well asrequirements for a specific implementation as well.

TABLE 9 Sample List of Noise TUs. All Am Are Be Been Both Could Did DoesHad has have having he hers him how if inasmuch is It its meanwhile moremuch must none not other others ought ours shall she should such thantherefore theirs them then they thus throughout till was were whatsoeverwhen whichever whoever whomever whosoever would you yours

Once the noise TUs are filtered out, then a frequency analysis may berun with the remaining windex values to determine the most used TUs inthe document. Note that this frequency analysis is optional. There areseveral ways to run frequency tests based on mathematics. The outputvaries based on the size of the document and the range of topics presentin a document. After filtering the noise TUs and a frequency reduction,if implemented, the output is the set of single-TU potential topics.

Note that if any tolerances are used by an implementation, they areusually incorporated at the beginning. For instance, if a synonym orstemming tolerance is used with the Topical Searcher, then it isnecessary to group such terms with their parent single-TU topic. This isusually done by the use of a data store such as a thesaurus or a projectdictionary, which is used to find the terms that are considered to benear the TU, and stored accordingly as a part of the windex value set tobe used for the remainder of the analysis.

The potential topics and their associated posits must be collected. Thisinformation is used to calculate the initial TIs that are possible withthe single-TU topics. The TI formation is based on Comm ID, and uses thefollowing process. Each instance of a potential topic is measured inposits from one another to form a topic cluster (TCL). A TCL has, inEnglish, between 80 to 350 posits between its end points, based on CommID. The TCL can grow so long as each instance is inside this constraint.If a TCL is closed, then it is possible a topic cluster group (TCG) canbe formed, so long as there is another TCL as the TCG's endpoint. Thus,a TCG requires tow TCLs as endpoints in order for its formation. The TCGinterval between two clusters is a multiple, in English, between 2 and 5of the TCL, again based on Comm ID. A TI is either a TCL or TCG,depending on the maximum length possible. Note that the entire set ofposits for a specific windex may form one or more TIs based on theconstraints imposed above.

Once the TIs are formed, then they are overlapped to determine the basicposit relations that exist. An overlap is a binary operation that refersto the relation between a TI and a neighbor, e.g. its immediatesuccessor, based on the starting posit for each TI. The overlapcondition occurs when the two TIs have posits in common. In other words,the TIs are sorted based on the beginning posit from smallest to largestwith respect to their order of appearance inside the document. Overlapsalso serve a constraints, where an overlap ends when two consecutive TIsdo not share any posits in common. The endpoints of an overlap are thebeginning posit of the first TI in the overlap and the ending posit ofthe last TI.

With the overlaps calculated, the multiple-TU topic determinationoccurs. It starts by establishing the maximum length of a topic for aComm ID. Then, there are modified constraints based on the f-Fetch TOSthat are used to establish the maximum length of a frame. A frame refersto the total number of posits in order that are examined for themultiple-TU topic. A frame's endpoints can be compared to the number ofsingle-TU topics that occur within the frame, subject to the constraintthat, if no inversion is true (e.g. all remain in the same FL), thenumber of insertions cannot exceed four times the number of single-TUtopics. This is expressed by: (4) (single-TU topics/frame). If the noinversion condition holds true, then the starting and ending posits mustbe checked to make sure that the maximum length is not violated. Aninversion occurs when there are two adjacent FLs, where the firstadjacent FL contains a single-TU topic and the second adjacent FLcontains at least one single-TU topic, subject to the multiple-TUconstraints. There may be other rules associated with this, depending onthe Comm ID. In English, the use of FTUs is a requirement for aninversion. If an inversion condition is true, the maximum number ofinsertions cannot exceed 50% of the number used for noninverted topics.Note that noninversions are more restrictive than inversions. Thisscalar is then multiplied by the number of single-TU topics within theframe, expressed by: (scalar) (single-TU topics/frame₁)+(scalar)(single-TU topics/frame₂). If the inversion condition holds true, thenthe starting posit in frame 1 and the ending posit in frame 2 must bechecked to make sure that the maximum length is not violated.

The resulting frame contains the multiple-TU topic, subject to anytolerances. Each frame that can be formed by the single-TU topics mustbe analyzed so that the total set of multiple-TU topics can be found. Itis possible that no multiple-TU topics will exist. However, iftolerances are used, then it is necessary to be able to determine if atolerated TU is related to a single-TU topic, and adjust the frameaccordingly or remove the frame if only one TU remains in the frame.Such tolerances will operate on the overlap determined by the single-TUtopic constraint. After a frame has been analyzed for both length,constraints involving insertions and inversions, and tolerances, thenthe frame can be considered a multiple-TU potential topic.

Once this set is established, it is usually necessary to run a set ofrefinements called Multiple-TU Commonality. This is usually necessary toremove spurious expressions of a multiple-TU topic that do not occurwithin length or frequency conditions, such as the TCL boundaries.Multiple-TU potential topics are examined by using their commoncharacteristics, namely the number of TUs within the multiple-TU topic,the frequency within an overlap or a document constraint, and theposition of repetitive elements. A repetitive element occurs when in abinary comparison, most or all but one of the TUs are in the same orderand in the same position in both multiple-TU topics. For example: if xyzis equal to multiple-TU topic 1 and xya is equal to multiple TU topic 2,then the repetitive elements are the subset (xy).

A variety of tests based on these combinations can be done, which can betailored for a variety of implementations. The basic tests are asfollows. Comparisons of the smallest possible multiple-TU topic for theComm ID for repetitive elements in more than one multiple-TU topics.Next, comparisons using the generic form AB to ABC, where the repetitiveelements comprise all the TUs in the first term and all but one in thesecond term. Also there are comparisons using the form AB to AC to ABC,where the repetitive element is the starting term, and the ending termsall occur in the last, larger set (ABC). Lastly, the pivot test takesthe form CAB to CA to AB, where A is the pivot that links the smallersets (CA, AB) with (CAB), which is greater in size (number of TUs).There are significant variations to these basic tests. In general, testsshould be run from the smallest set comparisons (number of TUs=2) to thelargest set comparisons (maximum number allowed).

An optional modifier reduction may be necessary in some implementations.A modifier is a TU that cannot, for a given Comm ID, be a single-TUtopic by itself or terminate a multiple-TU topic. Some examples inEnglish are: bigger, additional, steamed, westerly, and reducing. Thesemay be removed from any potential single- or multiple-TU topicsremaining, if required by an implementation.

When a multiple-TU topic set has been established, it is necessary thento remove it from the single-TU topic TIs any occurrences that formmultiple-TU topics.

This will require an adjustment of the single-TU topic TI, especially ifthe multiple-TU topic exists as an endpoint. Also, since it is anindependent operation, the multiple-TU topics must have their TIscalculated. Note that any single or orphans of a single- or multiple-TUtopic cannot form a TI. Once all such TIs are calculated, then thedensity of the TI can be determined by a simple count of the number ofinstances that form the TI.

Afterwards, the overlap is determined for the TIs that are the final setof topics for the document. The overlap works the same way as before,with the starting posit of each TI used to determine the order withinthe document, and each successive TI checked to see if any posits arefound to be in common. The final output is the final overlap values thatexist for the document. There is not limit to the number of overlapsthat can occur within a document. If any tolerances are used such assynonyms or stemming in an implementation, then a group assignment isnecessary for each overlap that has been found. This indicates the setof values that are related to the final TIs for that overlap or sectionof the document.

Once this has been done, then the topics can be placed in a standardoutline form using any standard lexicographic method known in the art,if required by an implementation. Such topical information may also bewritten to the index file as part of the ISet-Member scope variablesection or assigned to corresponding posit values. This would containthe overlap constraint, each TI's endpoints along with its correspondingwindex values (i.e., its topic identifier) under that constraint, andthe tolerance group values that relate to the overlap constraint, ifrequired by an implementation.

EXAMPLE

The following example is used to show how the search engine, accordingto embodiments of the invention, operates to index a short document andthen finds a search term (ST) in the document using the index.

Short Document names “test” and is comprised of the text of “The quickbrown fox jumped over a lazy dog. The fox then ran away.”

The search engine begins by acquiring the document is acquired by thesystem. English is the language of the document. A parse is done tolocate the TUs by using the TU separator of the language; in this case,a space. The resulting strings are further broken down to removeexternal punctuation, creating an initial matrix.

$\begin{matrix}{\begin{matrix}{The} \\{Quick} \\{Brown} \\{Fox} \\{Jumped} \\{Over} \\a \\{Lazy} \\{Dog} \\. \\{The} \\{Fox} \\{Then} \\{Ran} \\{Away} \\.\end{matrix}\;} & {{Matrix}\mspace{14mu} 1}\end{matrix}$

The initial matrix is converted into a windex form, whereby the TU arereplaced with a numeric code using the FTU matrix along with punctuationsupported by the ASCII character set. Assume this is the first documentbeing indexed by the search engine, and that the CTU values start at120. Matrix 1 is thusly converted into matrix 2.

$\begin{matrix}\begin{matrix}61 \\120 \\121 \\122 \\123 \\52 \\1 \\124 \\125 \\87 \\61 \\122 \\126 \\127 \\128 \\87\end{matrix} & {{Matrix}\mspace{14mu} 2}\end{matrix}$

From this basic encoded matrix, an ST can be entered by a user andprocessed by the invention. The storage of this on disk can vary basedon implementation. In this simple example, Matrix 3 shows a preferredarrangement of the index format, including any ISet member variablessuch as document name. In this case, the document name =“test”. Thereare two basic blocks that are illustrated, namely an ISet block and awindex or TU block. The string “test” is the ISet block member. Thewindex block begins with the first occurrence of the first TU in windexorder, and underneath each windex number contains all the posit numbersfor that windex number (a space indicates the end of the individualwindex block in the matrix). Implementation specific items such aslength counters have not been included so as to make the index morereadable.

$\begin{matrix}\begin{matrix}{Test} \\\; \\1 \\7 \\\; \\52 \\6 \\\; \\61 \\1 \\11 \\\; \\87 \\10 \\16 \\\; \\120 \\2 \\\; \\121 \\3 \\\; \\122 \\4 \\12 \\\; \\123 \\5 \\\; \\124 \\8 \\\; \\125 \\9 \\\; \\126 \\13 \\\; \\127 \\14 \\\; \\128 \\15\end{matrix} & {{Matrix}\mspace{14mu} 3}\end{matrix}$

Matrix 3 contains all the information in a storage mode. The ISet membervariable is stored as a string for this example; however, it may beencoded using a technique similar to the windex.

At this point, the basic information needed to conduct searches isavailable. For this example, assume that a user enters the search term“fox”. This is a single-TU entry, and the b-Fetch is automaticallychosen because of the size of the ST.

The ST is converted into the same format as matrix 3; in this case, thatmeans that a windex value must be assigned to “fox”. That value, as seenfrom matrix 3 is equal to 122.

The windex value 122 is compared to each document to determine itslocation. For a b-Fetch, the existence of the value is sufficient,without any other constraint, to be a potential document that isreturned. In this example, only one document is in the searchableuniverse. The comparison takes place by using a modified binary searchto locate the windex value within the TU block. The windex value isfound in this document, and what is returned is the part of the documentcontaining this windex value, as well as any other TUs as required by animplementation.

The value 122 is found, and that indicates that the first test, the TUthreshold test, has passed. We will assume at this point that thedocument threshold is equal to 1 for the remainder of this example.Next, we need to construct a frame of 24 posits. The frame starts on thefirst KW. This is done to determine the full extent of the PB matrix. Inthis example, there are two occurrences of 122 in the frame of 24. Sincethe document is less than the frame size, only one frame is possible forthe document. All the windex values from posit 4 to 12 are included inthis frame since two KWs occurred. Again, for this example, all otherTUs that may be used to make up an MRP for clarity have been eliminated.Again, the space indicates the break within the ISet member and windexblocks. In this case, the following matrix is returned.

$\begin{matrix}\begin{matrix}{Test} \\\; \\1 \\7 \\\; \\52 \\6 \\\; \\87 \\10 \\\; \\122 \\4 \\12 \\\; \\123 \\5 \\\; \\124 \\8 \\\; \\125 \\9\end{matrix} & {{Matrix}\mspace{14mu} 4}\end{matrix}$

Once this has been done, the number of KWs found is recorded as two.There are no orphans in this example as the ST=1. There is thereforeonly one PB returned for this example. The PB starts at posit 4 and endsat posit 12.

Since there is only one PB, and since no refinements or tolerances arerequired in this simple example, the Processor can now process theequation. First, the PB indicates that there are two KWs. Since theST=1, this means that the number of KWs=the number of N101s.

Next, the N103 number is true because there are at least two KWs andthey occur within a single PB of less than or equal to 24. Since thereare two N101s that occur within the N103, there are two N102s.

No other constraints are required, so the relevance equation can then beprocessed. k2=1 since no tolerances are required so no adjustment inscore is required.

Rcb=[(k1)(2)] [(k2)(2)]+0+0+0

Rcb=[(5)(2)] [(1)(2)]=20

Thus, the relevance score for this document is 20. If other documentswere available and matched, then this document would be rankedaccordingly. The document and its relevance is then returned to theuser.

Note that any of the functions described herein may be implemented inhardware, software, and/or firmware, and/or any combination thereof.When implemented in software, the elements of the present invention areessentially the code segments to perform the necessary tasks. Theprogram or code segments can be stored in a processor-readable medium.The “processor-readable medium” may include any medium that can store ortransfer information. Examples of the processor-readable medium includean electronic circuit, a semiconductor memory device, a ROM, a flashmemory, an erasable ROM (EROM), a floppy diskette, a compact diskCD-ROM, an optical dish, a hard disk, a fiber optic medium, etc. Thecode segments may be downloaded via computer networks such as theInternet, Intranet, etc.

FIG. 9 illustrates Computer System 900 adapted to use the presentinvention. Central Processing Unit (CPU) 901 is coupled to System Bus902. The CPU 901 may be any general purpose CPU, such as an IntelPentium processor. However, the present invention is not restricted bythe architecture of CPU 901 as long as CPU 901 supports the inventiveoperations as described herein. Bus 902 if coupled to Random AccessMemory (RAM) 903, which may be SRAM, DRAM, or SDRAM. ROM 904 is alsocoupled to System Bus 902, which may be PROM, EPROM, or EEPROM. RAM 903and ROM 904 hold user and system data and programs as is well known inthe art.

System Bus 902 is also coupled to input/output (I/O) Controller Card905, Communications Adapter Card 911, User Interface Card 908, andDisplay Card 909. The I/O Adapter Card 905 connects to Storage Devices906, such as one or more of a hard drive, a CD drive, a floppy diskdrive, a tape drive, to the computer system. The I/O Adapter 905 is alsoconnected to Printer 914, which would allow the system to print papercopies of information such as document, photographs, articles, etc. Notethat the printer may be a printer (e.g. inkjet, laser, etc.), a faxmachine, or a copier machine. Communications Card 911 is adapted tocouple the Computer System 900 to a Network 912, which may be one ormore of a telephone network, a local (LAN) and/or a wide-area (WAN)network, an Ethernet network, and/or the Internet network. UserInterface Card 908 couples user input devices, such as Keyboard 913,Pointing Device 907, and Microphone 916, to the Computer System 900.User Interface Card 908 also provides sound output to a user viaSpeaker(s) 915. The Display Card 909 is driven by CPU 901 to control thedisplay on Display Device 910.

Note that the following glossary is intended to assist the reader inunderstanding the material described herein. The glossary is tosupplement to definitions, explanations, and meanings provided herein,and is not to replace or otherwise limit in any manner the terms usedherein.

GLOSSARY

Term Definition ACL Access Control List used by network operatingsystems to control access to share points and files. Bucket Fetch(b-Fetch) A Basic Type of Search request used to find the Search Term,comprising of 1 or more term unit(s), in a set of documents regardlessof term unit order or term unit position. Communications“Communications” refers to all manner of information transfer, includingbut not limited to client-server, web- based and other systems. This iswithout regard to the media (if any is required) for the information tobe transferred. Communications ID (Comm ID) Identifies the grammar orsyntax used at the time of indexing, and it uses a set of FTUs to beidentified and stored. English is the default language. Computer“Computer” refers to any entity that can process a sequence ofinstructions, this is not limited to conventional computing whereswitching devices are used at the lowest level. This includes all mannerof digital and analog computing, including optical, quantum, nanotech,fluidic, pneumatic or other decision-making devices or systems.Constraint Result of a formation of an interval that cannot exceedboundaries as set at runtime. Content TU (CTU) A TU that has a uniquemeaning(s). DLen Document Length. Data Storage Device “Data StorageDevice” . . . Storage refers to any system capable of storing andretrieving information, including but not limited to all forms ofmagnetic, charge-storage, quantum well, and optical storage. DocumentTextual or database (e.g., table or array) information set; see ISetMember. Dual Document An unstructured document that contains structuredsegments, e.g., an embedded table or database. Exact Fetch (e-Fetch) ABasic Type of Search request used to find the Search Term, comprising of2 or more term units, exactly as listed in the Search Term, without anychange to their term unit order or term unit position. Findex Operatesat the TU, phrase, or section scope. It efficiently encodes specificinformation about formatting that is common throughout multiple ISetmember instances (such as bold, underline, font, border), making thestorage of such information more distributable. Flex Fetch (f-Fetch) ABasic Type of Search request used to find the Search Term within a rangeof term units that include either ST constrained term unit-positioninterruption or constrained ST term unit-order inversion. Fraction Afraction is either a) a series of CTUs or b) contains an FTU or FTUseries then a single CTU or a series of CTUs; it does not correspond toan English FL in definition. Fractional Length (FL) The number of positsthat occur starting w/an FTU or first posit of an ISet and ending w/thelast CTU that occurs directly before an FTU or the last posit of an ISetmember. Fractional Length (FL) Layer The functional level constrained byan FL instance. Frequency The number of times a ST TU, FL, or entire setappears in the ISet Member. Functional Scope The level at which afunction operates on a range of data. Functional TU (FTU) A TU thatcontains no unique meaning, but provides some type of information aboutanother TU, usually a content TU. Group A portion of the SU that isgrouped using some kind of mechanism or filter, such as a set ofdocuments that have the same file type or are exist at the same networklocation. Group Layer The functional level for group. Index The index isthe overall store of ISet Universe information at potentially alloperating scopes, depending on implementation, in a searchable formatthat is efficient and distributable. It include any number of supportingencoding schemes (such as Windex, Pindex, etc.). This is itself a fileformat that can be used by any application. Indexing Process of creatinga usable set of data required for all search functions, and may be usedto replace original document. Information Category The highest level ofa topic that occurs with an ISet Member, group, or universe. ISetInformation Set representing the searchable documents that meet thesearch region and file filter restrictions for a search (see “searchregion”). ISet Length Corrector (ILC) The process that normalizesrelevance scores for documents of varying lengths (DLens). ISet Member(ISetM) A single subset of an ISet. ISet Member (ISetM) Layer Thefunctional level that processes data for the entire ISet Memberinstance. ISet Universe All documents that constitute the totalsearchable documents in an information repository (e.g., data store).Most Relevant Part (MRP) ISet segment(s) containing the ST within theactual MRP excerpt length. MRP Decoder Process that translates thenumeric MRP values to the original term units. Order The occurrence of aset of TUs from left to right (as in English), either in a search termor in a document. Pindex An efficient encoding scheme that stores pathand other file location information in a form that is distributable, andoperates at various scopes. Posit The sequentially-numbered position(i.e., integer) assigned to each indexable TU, within an ISet member.Posit Block (PB) A grouping of posits that contain one or morerepetitions of an ST; they vary in length based on runtime results. Theymay contain other TUs that are not part of the ST but occur withinconstraints between the STs that are found. Posit Block (PB) Layer Thefunctional level where processing occurs within a PB instance. RecordFetch (r-Fetch) A Combinatorial Type of Search request used to find theSearch Term within a range of term units in structured documents orsegments of documents that are structured. In this context, structurerefers to a group of TUs, either by enforced column definition (as in adatabase), or in a columnar row fashion with a loose (unenforced)relation (as in a word processing table). Relevance The score given toeach ISet Member that indicates how close its content matched the searchrequest. The score may be used to sort the search results for the user.Search Region The range of addresses that comprise a region; this isidentified by a unique integer. For instance, a company can set a fileserver as a region, identified as 233, another server as 235. This way,the specific region that the user is either restricted to or requirescan be identified. Search Request (SR) The search term and searchcriteria Search Request ID (SRID) The unique identifier for a request soit may be tracked or so all related processing may be grouped. SearchTerm (ST) Set of all term units in the search request Search Term (ST)Layer The functional level where processing occurs w/in an ST instance.Search or Searchable Universe For a given implementation, all thesearchable information (SU) in its repository. Search Universe (SU) TheSU is the entire document repository, representing all the informationavailable to a user or system, that is available. Search Universe (SU)Layer The functional level which processes data whose scope is the SU.Section A part of a document identified using a specific criteria, suchas a set of TUs that belong to a topic. Section Layer The functionallevel which processes data that occurs w/in the section instance. SwitchA switch refers to any system variable available to the user that has amultitude of values. A switch may be manifested in an output interfaceas a switch, dial, slider, wheel, motion sensor, touch sensor, drop downlist, check box, radio button, or any such input mechanism that allows avariety of values to be selected. Term Unit (TU) In most languages,including English, any set of characters (e.g., words) or symbolsseparated by a space. Term Unit Duplication (TUD) The existence of twoor more copies of a TU that occur outside of grammatical or syntacticalconstraints. Term Unit Interval The distance between two TUs, using theTU as the unit of measure. This is a binary operation. Term Unit (TU)Layer The functional level at which processing occurs w/in a TUconstraint. Tolerance The range in which a specific function can operatein to affect the outcome of the search intersection. Topical-Fetch(t-Fetch) A Combinatorial-Discovery Type of Search that assigns topicsto sections or entire ISet Members. User A user may be a person, anapplication, or a system. Windex Operates at TU scope. An efficientencoding scheme that stores a single term unit in a language, such asEnglish, in a form that is distributable.

Although the present invention and its advantages have been described indetail, it should be understood that various changes, substitutions andalterations can be made herein without departing from the spirit andscope of the invention as defined by the appended claims. Moreover, thescope of the present application is not intended to be limited to theparticular embodiments of the process, machine, manufacture, compositionof matter, means, methods and steps described in the specification. Asone of ordinary skill in the art will readily appreciate from thedisclosure of the present invention, processes, machines, manufacture,compositions of matter, means, methods, or steps, presently existing orlater to be developed that perform substantially the same function orachieve substantially the same result as the corresponding embodimentsdescribed herein may be utilized according to the present invention.Accordingly, the appended claims are intended to include within theirscope such processes, machines, manufacture, compositions of matter,means, methods, or steps.

1. A system for forming an index of an information repository, whereinthe system is stored on a computer-readable medium, the systemcomprises: an Acquisitioner module that locates a plurality of documentswithin the repository; a Formatter module that refines the documentslocated by the Acquisitioner module; and an Indexer module that forms anumerical matrix from the refined documents, wherein the numericalmatrix is the index.
 2. The system of claim 1, wherein the Acquisitionermodule scans the repository for documents that comprise at least oneinformation type.
 3. The system of claim 2, wherein the information typeis at least one of a word processing file, a portable document file, aspreadsheet file, a presentation file, a text file, and a markuplanguage file.
 4. The system of claim 1, wherein the Formatter moduleoperates to remove information that is not relevant for the index. 5.The system of claim 4, wherein the information that is not relevant forthe index comprises meta-tags.
 6. The system of claim 1, wherein theFormatter module forms a matrix of term units, wherein each term unit isa set of characters that is separated by a space from another term unit.7. The system of claim 6, wherein each term unit is one of a functionalterm unit and a content term unit, whereby a content term unit has aunique meaning, and a function term unit affects a content term unit. 8.The system of claim 6, wherein the Integer assigns an integer to atleast one term unit to indicate its position within the document.
 9. Thesystem of claim 6, wherein the Indexer module converts the matrix ofterm units into at least one numeric matrix that comprises a binaryrepresentation of the matrix of term units.
 10. The system of claim 9,wherein the numeric matrix comprises a binary representation of words ofthe documents.
 11. The system of claim 9, wherein the numeric matrixcomprises a binary representation of addresses of the documents.
 12. Thesystem of claim 9, wherein the numeric matrix comprises a binaryrepresentation of at least one of formatting, links, and embeddedelements of the documents.
 13. The system of claim 6, wherein the indexincludes at least one of document characteristics, document type, theterm units, and a position of each term unit within the document. 14.The system of claim 1, wherein the index is used by a search tool, andwherein the search tool compares the index with a search request. 15.The system of claim 1, further comprising: a Maintainer module thatupdates the index in response to changes in the repository.
 16. A methodfor forming an index of an information repository, wherein the methodoperates on a computer system, and comprises: locating a plurality ofdocuments within the repository; refining the documents; and forming anumerical matrix from the refined documents, wherein the numericalmatrix is the index; wherein the index is usable by a search tool thatcompares the index with a search request from a user.
 17. The method ofclaim 16, wherein forming comprising: forming a matrix of term units,wherein each term unit is a set of characters that is separated by aspace from another term unit.
 18. The method of claim 16, whereinforming further comprises: assigning an integer to at least one termunit to indicate its position within the document.
 19. A computerprogram product having a computer-readable medium having computerprogram logic recorded thereon for forming an index of an informationrepository, the computer program product comprising: means for scanningthe repository for documents that comprise at least one informationtype; and means for forming a numerical matrix from the scanneddocuments, wherein the numerical matrix is the index.
 20. The computerprogram product of claim 19 wherein the means for forming comprises:means for forming a matrix of term units, wherein each term unit is aset of characters that is separated by a space from another term unit;and means for assigning an integer to at least one term unit to indicateits position within the document.